您的位置:首页 > Web前端

剑指offer:表示数值的字符串

2017-07-11 22:47 295 查看
题目描述

请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。

class Solution {
public:
bool isNumeric(char* string)
{
if(string==NULL) return false;
int len=strlen(string);
int i=0,dot=0,nume=0,num=0;//i是索引,dot是.的个数,nume是e的个数,num是数字的个数
if(string[0]=='+'||string[0]=='-') i++;//当第一个是正负号时,继续遍历
while(i<len){
if(string[i]>='0'&&string[i]<='9'){//当前字符是数字时,num自加,继续遍历,
i++;
num=1;

}
else if(string[i]=='.'){//当前字符为.时,
if(nume>0||dot>0) return false;//此时若前面有了e或者.时,则不是数值,
i++;
dot++;

}else if(string[i]=='e'||string[i]=='E'){//当前字符为e时,
if(num==0||nume>0) return false;若前面没有数字,或者已经有了e时,不是数值
i++;
nume++;
if(string[i]=='\0'){return false;}//e的后面没有数字时
if(string[i]=='+'||string[i]=='-'){i++;}//e的后面是正负号时,继续往下遍历
}
else{return false;}

}
return true;

}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: