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