题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。
- 算法:循环
- 数据结构:字符串
- 编程语言:C++
class Solution {
public:
bool isNumeric(char* string)
{
if(string ==nullptr)
return false;
if(*string=='+'||*string=='-')//判断第一位是不是符号位
string++;
if(*string=='\0')//下一位是不是结束字符串
return false;
int pot=0,num=0,isenu=0;//标记小数部分,整数部分和e指数部分是否存在
while(*string!='\0')//从第三位开始判断
{
if(*string>='0'&&*string<='9')
{
string++;
num=1;
}
else if(*string=='.')
{
if(pot>0||isenu>0)//不可以出现多个小数,小数不可以出现在指数后面
return false;
string++;
pot=1;//存在小数部分
}
else if(*string=='e'||*string=='E')
{
if(num==0||isenu>0)
return false;
string++;
isenu++;
if(*string=='+'||*string=='-')
string++;
if(*string=='\0')
return false;
}
else
return false;
}
return true;
}
};