力扣算法题—065有效数字

验证给定的字符串是否为数字。

例如:
"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 };
原文地址:https://www.cnblogs.com/zzw1024/p/10670946.html