题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。
可以观察总结错误的字符串的格式:
- “+/-" 只可能出现在开头 或者 E/e后,且不能连续出现;
- “.” 只能出现一次,且其前面不能有 e/E;
- ‘e/E’后面不能没有数字了。
- 中间不能出现奇怪的字符。
参考:
https://www.nowcoder.com/profile/9717187/codeBookDetail?submissionId=15761119
class Solution {
public:
bool isNumeric(char* string)
{
if(string==NULL)return false;
if (*string=='\0')return false;
if (*string=='+' || *string=='-')string++;
int dot=0, num = 0, nume = 0;
while(*string!='\0')
{
if (*string >= '0' && *string<='9')
{
num ++;
string++;
}
else if (*string=='.')
{
if (dot>0 || nume>0){
return false;
}
string ++;
dot++;
}
else if (*string=='e' || *string=='E')
{
if (nume>0 || num==0){
return false;
}
string ++;
nume++;
if (*string== '+' || *string=='-'){
string++;
}
if (*string=='\0'){
return false;
}
}
else{
return false;
}
}
return true;
}
};