问题描述:
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.
这个题目的难点就是要考虑的问题都有哪些
1、‘e’前面可以有‘.’,‘e’点前面不能有‘.’(为什么是这样,e是什么东东,我也不知道,知道的告诉我也下呗,感激不尽)
2、数字中间不能有空格
3、首尾可以有空格
4、‘.’和‘e’最多只能出现一次
上代码
class Solution {
public:
bool isNumber(const char *s) {
if(strlen(s)==0||s==NULL)
return false;
int i=0;
while(s[i]==' ')
i++;
if(s[i]=='-' || s[i]=='+')
i++;
bool isNum = false;
bool isDot = false;
bool isE =false;
bool isSpace = false;
for( ;i<strlen(s);i++)
{
if(s[i]==' ')
isSpace=true;
else if(isSpace==true)
return false;
else if(s[i]>='0'&&s[i]<='9')
{
isNum=true;
}
else if(s[i]=='.')
{
if(isDot==false && isE==false)
isDot = true;
else
return false;
}
else if(s[i]=='e')
{
if(isE==false && isNum==true)
{
if(s[i+1]=='-'||s[i+1]=='+')
{
i++;
}
isE=true;
isNum=false;
}
else
return false;
}
else
return false;
}
return isNum;
}
};