题目:
//遇到数字:一定合法
//遇到'.'且合法需要满足条件:之前没出现过'.',之前没出现过'e'
//遇到'e'且合法需要满足条件:之前没出现过'e',之前出现过整数
//遇到'+'或者'-'且合法需要满足条件:位于字符串第一位,或者紧跟在'e'之后
class Solution {
public:
bool isNumber(string s) {
int i=0;
while(s[i]==' ') i++; //删除前面所有空格
if(i>=s.size()) return false; //排除仅有空格的情况
s=s.substr(i); //用s=s.substr(i) 从第i位开始的子串代替原字符串
while(s.back()==' '){ //删除末尾所有空格
s.pop_back();
}
bool numFlag=false;
bool dotFlag=false;
bool eFlag=false;
for(int i=0;i<s.size();i++){
if(isdigit(s[i])){ //遇到数字,用isdigit()函数判断
numFlag=true;
}
else if(s[i]=='.'&&!dotFlag&&!eFlag){ //遇到'.'且合法:之前没出现过'.',之前没出现过'e'
dotFlag=true;
}
else if((s[i]=='e'||s[i]=='E')&&!eFlag&&numFlag){ //遇到'e'且合法:之前没出现过'e',之前出现过数字
eFlag=true;
numFlag=false; //因为'e'之后至少要有一个数字,所以numFlag=false
}
else if((s[i]=='+'||s[i]=='-')&&(i==0||s[i-1]=='e'||s[i-1]=='E')){ //遇到'+'或者'-'且合法:位于字符串第一位,或者紧跟在'e'之后
}
else{ //其他情况都违法
return false;
}
}
return numFlag; //出现数字并且一直合法,即为数值
}
};
以上代码转自力扣评论区
分类:
算法编程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具