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