class Solution { public: bool isNumeric(string s) { // write code here int i = 0; while (i < s.size() && s[i] == ' ') i ++ ; int j = s.size() - 1; while (j >= 0 && s[j] == ' ') j -- ; if (i > j) return false; s = s.substr(i, j - i + 1); if (s[0] == '-' || s[0] == '+') s = s.substr(1); if (s.empty() || s[0] == '.' && s.size() == 1) return false; int dot = 0, e = 0; for (int i = 0; i < s.size(); i ++ ) { if (s[i] >= '0' && s[i] <= '9'); else if (s[i] == '.') { dot ++ ; if (e || dot > 1) return false; } else if (s[i] == 'e' || s[i] == 'E') { e ++ ; if (i + 1 == s.size() || i == 0 || e > 1 || i == 1 && s[0] == '.') return false; if (s[i + 1] == '+' || s[i + 1] == '-') { if (i + 2 == s.size()) return false; i ++ ; } } else return false; } return true; } }; //只要有2个.就错了 //e或E后面可以跟一个符号,否则出现两个符号也错 //前后都可以有空格,出现在数字表示段则错误 //一个.的前或后至少有一个数字,可以前后都有 //.和e或E只能存在一个