请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。
例如,字符串"+100"
,"5e2"
,"-123"
,"3.1416"
和"-1E-16"
都表示数值。
但是"12e"
,"1a3.14"
,"1.2.3"
,"+-5"
和"12e+4.3"
都不是。
class Solution { public: bool isNumber(string s) { 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 || 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; } };
标签:表示,false,int,数值,++,&&,字符串,return,size From: https://www.cnblogs.com/leetothemoon/p/16982032.html