LeetCode 刷题【65. 有效数字】

65. 有效数字

自己做

解:逐个检查各位置

cpp 复制代码
class Solution {
public:
    bool isNumber(string s) {
        int begin = 0;                  //检查起始
        int int_len = 0;                //整数部分长度
        int float_len = 0;              //小数部分长度

        if(s[0] == '-' || s[0] == '+')  //符号位存在,整数部分起始位置调整为从1开始
            begin++;

        //检查整数位
        while(begin < (int)s.size() && s[begin] != '.' && s[begin] != 'e' && s[begin] != 'E'){
            if(s[begin] > '9' || s[begin] < '0')            //如果整数位出现了非数字,说明这不是一个正确的数字
                return false;
            begin++;
            int_len++;
        }

        //检查小数位(如果有)
        if(begin < (int)s.size() - 1 && s[begin] == '.'){
            begin++;                                            //小数位起始      

            while(begin < (int)s.size() && s[begin] != 'e' && s[begin] != 'E'){
                if(s[begin] > '9' || s[begin] < '0')            //如果小数位出现了非数字,说明这不是一个正确的数字
                    return false;
                begin++;
                float_len++;
            }            
        }

        if(int_len == 0 && float_len == 0)                      //如果整数部分和小数部分都为空,说明这不是一个正确的数字
            return false;

        //检查指数位(如果有)
        if(begin < (int)s.size() && (s[begin] == 'e' || s[begin] == 'E')){
            begin++;                                            //指数位起始

            if(begin == (int)s.size())                          //如果不存在指数位,说明这不是一个正确的数字=>排除"1e"的情况
                return false;

            if(s[begin] == '-' || s[begin] == '+')              //符号位存在,指数部分起始位置调整
                begin++;

            if(begin == (int)s.size())                          //如果不存在指数位,说明这不是一个正确的数字=>排除"1e+"的情况"
                return false;

            while(begin < (int)s.size()){
                if(s[begin] > '9' || s[begin] < '0')            //如果小数位出现了非数字,说明这不是一个正确的数字
                    return false;
                begin++;
            }            
        }

        return true;

    }
};
相关推荐
Lee_yayayayaya10 分钟前
本原多项式产生m序列的原理
算法
蒙奇D索大1 小时前
【算法】递归的艺术:从本质思想到递归树,深入剖析算法的性能权衡
经验分享·笔记·算法·改行学it
王哈哈^_^1 小时前
【数据集+完整源码】水稻病害数据集,yolov8水稻病害检测数据集 6715 张,目标检测水稻识别算法实战训推教程
人工智能·算法·yolo·目标检测·计算机视觉·视觉检测·毕业设计
light_in_hand2 小时前
内存区域划分——垃圾回收
java·jvm·算法
小安同学iter2 小时前
SQL50+Hot100系列(11.7)
java·算法·leetcode·hot100·sql50
_dindong2 小时前
笔试强训:Week-4
数据结构·c++·笔记·学习·算法·哈希算法·散列表
星释3 小时前
Rust 练习册 :Nucleotide Codons与生物信息学
开发语言·算法·rust
寂静山林3 小时前
UVa 1366 Martian Mining
算法
陌路204 小时前
S12 简单排序算法--冒泡 选择 直接插入 希尔排序
数据结构·算法·排序算法
音视频牛哥4 小时前
从 SmartMediaKit 设计探讨音视频工程师的面试与能力评估框架
程序人生·职场和发展·音视频·rtsp播放器·rtmp播放器·音视频工程师面试·音视频程序员面试题