您的位置:首页 > 其它

【LeetCode】Valid Number

2014-06-18 21:18 211 查看
题目描述:

Validate if a given string is numeric.

Some examples:

"0"
=>
true


" 0.1 "
=>
true


"abc"
=>
false


"1 a"
=>
false


"2e10"
=>
true


Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.
需要考虑的情况比较多。各用一个变量标记是否已经出现过,分开讨论。注意出现e的时候数字重新计算就好。
代码:

class Solution {
public:
bool isNumber(const char *s) {
bool dot(false), e(false), num(false), blank(false), sig(false);
while (*s == ' ')
s++;
while (*s){
if (*s == '.'){
if (dot || e || blank)
return false;
dot = true;
}
else if (*s == 'e'){
if (!num || e)
return false;
e = true;
num = false;
}
else if (*s >= '0'&&*s <= '9'){
if (blank)
return false;
num = true;
}
else if (*s == ' ')
blank = true;
else if (*s == '+' || *s == '-'){
if (*(s - 1) != 'e' && (num || dot || sig))
return false;
sig = true;
}
else
return false;
s++;
}
if (num)
return true;
else
return false;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: