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