表示数值的字符串
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串“+100”,“5e2”,“-123”,“3.1415”,和“-1E-16”都表示数值。但是“12e”,“1a3.14”,“1.2.3”,“±5”和“12e+4.3”都不是。
题解:
暴力法,将所有可能的不是数值的情况一一列举,一一排除在外。
class Solution {
public:
bool isNumeric(char* string) {
int len = strlen(string);//.sizeof(char);
if (len < 1) return false;
int fuhao = 0;
int point = 0;
int mi = 0;
for (int i = 0; i < len; i++) {
if (string[i] >= '0' && string[i] <= '9')
continue;
else {
if (string[i] == '+' || string[i] == '-') {
if (fuhao == 0){
if(i==0||string[i-1]=='e'||string[i-1]=='E')
fuhao++;
else return false;
}
else if (fuhao == 1 && ((string[i - 1] == 'e') || (string[i - 1] == 'E')))
fuhao++;
else
return false;
}
else if (string[i] == '.' && point == 0 && mi==0)
point++;
else if (string[i] == '.' && (point == 1 || mi == 1))
return false;
else if(string[i]=='e'&& i==len-1)
return false;
else if ((string[i] == 'e' || string[i] == 'E') && mi == 0)
mi++;
else if ((string[i] == 'e' || string[i] == 'E') && mi == 1)
return false;
else
return false;
}
}
return true;
}
};