验证给定的字符串是否为数字。
例如:"0"
=> true
" 0.1 "
=> true
"abc"
=> false
"1 a"
=> false
"2e10"
=> true
说明: 我们有意将问题陈述地比较模糊。在实现代码之前,你应当事先思考所有可能的情况。
更新于 2015-02-10:C++
函数的形式已经更新了。如果你仍然看见你的函数接收 const char *
类型的参数,请点击重载按钮重置你的代码。
/***************待更新*************/
1 class Solution { 2 public: 3 bool isNumber(string s) { 4 bool num = false, numAfterE = true, dot = false, exp = false, sign = false; 5 int n = s.size(); 6 for (int i = 0; i < n; ++i) { 7 if (s[i] == ' ') { 8 if (i < n - 1 && s[i + 1] != ' ' && (num || dot || exp || sign)) return false; 9 } 10 else if (s[i] == '+' || s[i] == '-') { 11 if (i > 0 && s[i - 1] != 'e' && s[i - 1] != ' ') return false; 12 sign = true; 13 } 14 else if (s[i] >= '0' && s[i] <= '9') { 15 num = true; 16 numAfterE = true; 17 } 18 else if (s[i] == '.') { 19 if (dot || exp) return false; 20 dot = true; 21 } 22 else if (s[i] == 'e') { 23 if (exp || !num) return false; 24 exp = true; 25 numAfterE = false; 26 } 27 else return false; 28 } 29 return num && numAfterE; 30 } 31 };