题目描述
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.
注意:判断顺序依次为跳过空格、“+-”、小数点、exp、others.
实现代码:
class Solution {
public:
bool isNumber(const char *s) {
string str(s); //const char*转化为string,括号形式的初始化;
int index = str.find_first_not_of(' '); //找到第一个不是空的字符;
if(str[index] == '+' || str[index] == '-')
index++;
int points = 0,numbers = 0;
for(;str[index]>='0' && str[index]<='9' || str[index]=='.';index++)
s[index] == '.' ? ++points : ++ numbers;
if(points>1 || numbers<1)
return false;
if(str[index] == 'e' || str[index] == 'E')
{
index++;
if(str[index] == '+' || str[index] == '-')
index++;
int afterE =0;
for(;str[index]>='0' && str[index]<='9';index++)
afterE++;
if(afterE<1)
return false;
}
for(;str[index]==' ';index++){} //遍历剩下的空格;
return str[index]=='\0';
}
};