时间限制:1秒 空间限制:32768K 热度指数:186761
本题知识点: 字符串
题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
方法:1、'+'和’-‘只能出现在第一位或者e之后;
2、e只能出现一次,且不能出现在第一位或者最后一位
3、小数点只能出现一次,且不能出现在第一位或者最后一位,且不能出现在字符e之后
4、不允许有非e之外的字母
代码如下:
class Solution {
public:
bool isNumeric(char* string)
{
int len=strlen(string);
if(len==0) return false;
int point=-1;//小数点的位置
int e=-1;//e的位置
for(int i=0;i<len;i++){
if(string[i]=='-'||string[i]=='+'){
if(i!=0&&(i>=1&&tolower(string[i-1])!='e')||i==len-1){
return false;
}
}else if(tolower(string[i])=='e'){
if(e!=-1||i==len-1) return false;
else{
e=i;
continue;
}
}else if(isalpha(string[i])&&tolower(string[i])!='e'){
return false;
}else if(string[i]=='.'){
if(point!=-1||i==0||i==len-1||e!=-1){
return false;
}else{
point=i;
}
}else if(string[i]>='0'&&string[i]<='9'){
continue;
}
}
return true;
}
};