题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。
解题
class Solution {
public:
bool isNumeric(char* string)
{
// [sign]intergral-digits[.[fraction-digits]][e|E[sign]exponential-digits]
// []可有可无
if(string[0]==0) return false;
int eee=0;
int i=0;
int pcnt=0;
while(string[i]!=0){
if(string[i]=='e' || string[i]=='E') {
eee++;
if(string[i+1]==0) return false;
}
else if(string[i]=='+' || string[i]=='-'){
if(i!=0 && eee==0) return false;
}
else if(string[i]=='.' ){
pcnt++;
if(pcnt>1||eee==1) return false;
}
else if(string[i]>'9' || string[i]<'0') return false;
i++;
}
return true;
}
};