class Solution {
public:
bool isNumeric(char* string)
{
if(string == NULL)
return false;
if(*string == '+' || *string == '-')
string++;
if(*string == '\0')
return false;
scanDigit(&string);
bool flag = true;
if(*string != '\0')
{
if(*string == '.')
{
string++;
scanDigit(&string);
if(*string == 'e' || *string == 'E')
flag = isE(&string);
}
else if(*string == 'e' || *string == 'E') //整数
flag = isE(&string);
else
flag = false;
}
return flag && (*string == '\0'); //此处考虑1.2.3这个例子就知道为什么要加后一项
}
void scanDigit(char **string)
{
while(**string != '\0' && **string >='0' && **string <='9')
++(*string);
}
bool isE(char **string)
{
++(*string);
if(**string == '+' || **string == '-')
++(*string);
if(**string == '\0')
return false;
scanDigit(string);
return (**string == '\0') ? true : false;
}
};