您的位置:首页 > 职场人生

剑指offer——面试题54:表示数值的字符串

2018-03-29 23:28 302 查看

剑指offer——面试题54:表示数值的字符串

参考网址:https://www.nowcoder.com/profile/9717187/codeBookDetail?submissionId=15761119

利用特殊字符把字符串分割为整数段这个思想值得借鉴!

class Solution {
public:
bool isNumeric(char* string)
{
if(string == NULL) //空指针返回false
return false;
if(*string == '+' || *string == '-')
string++;
if(*string == '\0') //若只有符号位则返回false
return false;
int dot = 0, num = 0, nume = 0;//分别用来标记小数点、整数部分和e指数是否存在
while(*string != '\0') { //利用特殊字符把字符串分割为整数段这个思想值得借鉴!
if(*string >= '0' && *string <= '9') //出现了数字,则指针往后移
{                                    //同时num = 1代表出现了整数部分
string++;
num=1;
}
else if(*string == '.'){
if(dot > 0 || nume > 0) //如果存在已经存在小数点或e指数则返回false。注:此题在书中规定中如"-.123"也被判定为数值
return false;       //即有的小数没有整数位,也被判定为合法数值所以没有"num == 0 ||"这个条件
string++;//否则指针后移
dot=1; //并标记出现了小数点
}
else if(*string == 'e' || *string == 'E')
{
if(num == 0 || nume > 0) //如果没有整数部分或已经存在e指数
return false;        //返回false
string++;//否则指针后移
nume++; //并标记已经出现了e指数
if(*string == '+' || *string == '-')
string++;//如果出现了正负号,指针后移
if(*string == '\0') //如果e指数后面字符串直接结束,返回false
return
b854
false;   //如果e后面有符号位,然后符号位直接结束,返回false
}
else
return false;
}
return true;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: