请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
class Solution {
public:
void scanDigital(char **str){
while(**str != '\0'&&**str>= '0'&&**str <= '9')
++(*str);
}
bool isExponent(char **str){
if(**str != 'e' &&**str != 'E')
return false;
++(*str);
if(**str == '+'||**str == '-')
++(*str);
if(**str == NULL)
return false;
scanDigital(str);
return (**str =='\0')?true:false;
}
bool isNumeric(char* string){
if(string == NULL)
return false;
if(*string == '+'||*string =='-')
++string;
if(*string == '\0')
return false;
bool result = true;
scanDigital(&string);
if(*string != '\0')
{
if(*string == '.')
{
++string;
scanDigital(&string);
if(*string == 'e'||*string =='E')
result = isExponent(&string);
}
else if(*string == 'e'||*string =='E')
result = isExponent(&string);
else
result = false;
}
return result && (*string == '\0');
}
};