随笔 - 165,  文章 - 0,  评论 - 4,  阅读 - 18023

题目:

//遇到数字:一定合法
//遇到'.'且合法需要满足条件:之前没出现过'.',之前没出现过'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;           //出现数字并且一直合法,即为数值
    }
};

以上代码转自力扣评论区

posted on   孜孜不倦fly  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示