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、'.'、正负号.
正负号:只出现在第一个字符或e的后面一个字符;
小数点:字符串中不能只存在小数点,也不能只含小数点和正负号,小数点不能在e后
e:不能出现在第一个字符或最后一个字符,e前面不能没有数字。
在处理之前,先把头尾的空格去掉,然后在进行数字、e、'.'、正负号的判断。
class Solution { public: bool isNumber(const char *s) { if(strlen(s)<=0) return true; while(*s==' ') s++; const char *pEnd=s+strlen(s)-1; while(*pEnd==' ') pEnd--; if(*s=='+'||*s=='-') s++; const char *pBeg=s; int digit=0; int point=0; int e=0; while(*pBeg!='