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.
class Solution {
public:
bool isNumber(const char *s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int i=0;
bool dotappeared=false;
bool numberappeared=false;
bool eappeared=false;
for( ; s[i]==' ' ; i++);
if(s[i]=='+' || s[i]=='-')
i++;
if(s[i]=='\0')
return false;
for( ; s[i] ; i++){
switch(s[i]){
case ' ':
for( ; s[i] && s[i]==' ' ; i++);
if(s[i]!='\0')
return false;
i--;
break;
case '.':
if(dotappeared)
return false;
if(eappeared)
return false;
dotappeared=true;
break;
case 'e':
case 'E':
if(!numberappeared || eappeared)
return false;
eappeared=true;
dotappeared=false;
numberappeared=false;
if(s[i+1]=='-' || s[i+1]=='+')
i++;
break;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
numberappeared=true;
break;
default:
return false;
}
}
if(!numberappeared)
return false;
return true;
}
};