首页 > 代码库 > 每日算法之四十七:Valid Number (验证是否为数字)
每日算法之四十七:Valid Number (验证是否为数字)
要想正确的写出这个函数不是件容易的事情,因为要考虑的事情很多:
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 (验证是否为数字)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。