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