剑指offer_编程题_表示数值的字符串
其他
2020-04-27 18:39:12
阅读次数: 0
- 题目
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。
例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。
但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
- 对小数点和e进行标记,逐字符匹配
class Solution {
public:
bool isNumeric(char* string)
{
if(string==NULL)
return false;
if(*string=='+'||*string=='-')
string++;
int xsdflag = 0, eflag = 0;
while(*string!='\0')
{
if (*string>='0'&&*string<='9')
string++;
else if (*string=='.') {
if (xsdflag == 1)
return false;
xsdflag = 1;
string++;
}
else if (*string=='e'||*string=='E') {
if (eflag == 1)
return false;
xsdflag = 1;
eflag = 1;
if (*(string+1) == '+'||*(string+1)== '-')
string++;
else if (*(string+1)=='\0')
return false;
string++;
}
else
return false;
}
return true;
}
};
- 使用正则求解
#include<regex>
class Solution {
public:
bool isNumeric(char* string)
{
std::string s = string;
std::string pattern = "[+-]?[0-9]*(\\.[0-9]*)?([eE][+-]?[0-9]+)?";
std::regex rec(pattern);
if (std::regex_match(s, rec))
return true;
return false;
}
};
发布了80 篇原创文章 ·
获赞 18 ·
访问量 1万+
转载自blog.csdn.net/C_abua/article/details/105738671