标签:
https://leetcode.com/problems/valid-number/
1 class Solution { 2 public: 3 bool isNumber(string s) { 4 while(!s.empty() && s[0] == ‘ ‘) { 5 s.erase(s.begin()); 6 } 7 while (!s.empty() && s[s.size() - 1] == ‘ ‘) { 8 s.erase(s.end() - 1); 9 } 10 if(s.empty()) 11 return false; 12 int state = 0; 13 for(int i = 0; i < s.size(); i++) { 14 if(s[i] == ‘-‘ || s[i] == ‘+‘) { 15 if(state == 0 || state == 3) { 16 state ++; 17 } else { 18 return false; 19 } 20 } else if(s[i] == ‘.‘) { 21 if( state == 2) { 22 state = 7; 23 } else if(state == 0 || state == 1) { 24 state = 6; 25 } else { 26 return false; 27 } 28 } else if(s[i] >= ‘0‘ && s[i] <= ‘9‘) { 29 if(state == 1 || state == 4 || state == 6) { 30 state ++; 31 } else if(state == 0 || state == 3) { 32 state = state + 2; 33 } 34 } else if(s[i] == ‘e‘ || s[i] == ‘E‘) { 35 if(state == 2 || state == 7) { 36 state = 3; 37 } else { 38 return false; 39 } 40 } else { 41 return false; 42 } 43 } 44 if(state == 2 || state == 7 || state == 5) 45 return true; 46 return false; 47 } 48 };
状态转化图
标签:
原文地址:http://www.cnblogs.com/daijkstra/p/4813147.html