标签:验证
要想正确的写出这个函数不是件容易的事情,因为要考虑的事情很多:
1)字符串的前后都可能会有空格,但是中间不允许有空格。
2)可能有小数,1.235,或者.3522这种形式
3)可能有指数形式,2e10 2e-1等形式
Validate if a given string is numeric.
Some examples:
"0"
=> true
" 0.1 "
=> true
"abc"
=> false
"1 a"
=> false
"2e10"
=> true
然后逐位去查询,检验前提调试是否会成立,如果中间有一个不满足条件就返回false。
<span style="font-size:18px;">class Solution { public: bool isNumber(const char *s) { while (*s == ' ') ++s; while (*s == '+' || *s == '-') ++s; bool exp = false, space = false, point = false; bool number = false; while (*s != '\0') { if (isdigit(*s)) { if (space) return false; else number = true; } else if (*s == '.') { if (!point && !space && !exp) { point = true; } else { return false; } } else if (*s == 'e') { if (!exp && number && !space) { exp = true; number = false; while (*(s+1) == '+' || *(s+1) == '-') ++s; } else { return false; } } else if (*s == ' ') { if (!space) { space = true; } } else { return false; } ++s; } return number; } };</span>
每日算法之四十七:Valid Number (验证是否为数字)
标签:验证
原文地址:http://blog.csdn.net/yapian8/article/details/39270195