您的位置:首页 > Web前端

剑指offer--53.表示数值的字符串

2019-02-26 20:48 309 查看

题目描述

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

时间限制:1秒 空间限制:32768K 热度指数:112273
本题知识点: 字符串

思路

见代码

class Solution {
public:
bool isNumeric(char* str)
{    //空字符串不为数字
if(*str == '\0')
return false;
bool e=false;//表示之前是否有e
bool dot=false;//表示是否有dot
int i=0;
//从非符号位开始
if(str [i]=='+'||str[i]=='-')
++i;
while(str[i]!='\0')
{    //在数字0-9之间,后移一位
if(str[i]-'0'<=9&&str[i]-'0'>=0)
++i;
else if(str[i]=='.')
{    //在e之后出现小数点,则返回false
if(e)
return false;
//已经出现过小数点,则返回false
if(dot)
return false;
else
dot=true;
++i;
}
else if(str[i]=='e'||str[i]=='E')
{//若等于e,且后面还有数字,则置true,否则返回false,或者已经出现过e,返回false
if(str[i+1]=='\0'||e)
return false;
else
e=true;
++i;
//去除e后面的符号位
if(str[i]=='+'||str[i]=='-')
++i;
}
else
return false;
}
//若只有一个+,-号,则返回false
if((str [0]=='+'||str[0]=='-')&&str[1]=='\0')
return false;
else
return true;
}

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