leetcode[65]Valid Number
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.
Update (2014-12-06):
New test cases had been added. Thanks unfounder's contribution.
class Solution { public: bool isNumber(const char *s) { if(s==NULL)return false; while(*s==' ')s++; if(*s=='+'||*s=='-') s++; bool dotAppear=false; bool spaceAppear=false; bool eAppear=false; bool firstAppear=false; bool secondAppear=false; while(*s!='\0') { if (*s==' ') { spaceAppear=true; } else if(spaceAppear) { return false; } else if (*s=='.') { if (dotAppear||eAppear||spaceAppear) { return false; } else { dotAppear=true; } } else if (*s=='e'||*s=='E') { if (eAppear||!firstAppear||spaceAppear) { return false; } else { eAppear=true; } } else if(*s=='+'||*s=='-') { if (!(*(s-1)=='e'||*(s-1)=='E')||spaceAppear) { return false; } } else if (*s>='0'&&*s<='9') { if (spaceAppear) { return false; } else if (!eAppear) { firstAppear=true; } else { secondAppear=true; } } else { return false; } s++; } if (!firstAppear) { return false; } else if (eAppear&&!secondAppear) { return false; } else { return true; } } };