leetCode65. 有效数字

leetCode65. 有效数字

题目思路


代码

cpp 复制代码
class Solution {
public:
    bool isNumber(string s) {
        int l = 0, r = s.size() - 1;
        // 1.忽略前后的空格
        while(l <= r && s[l] == ' ') l++;
        while(l <= r && s[r] == ' ') r--;
        if(l > r) return false;
        s = s.substr(l,r - l + 1); // 区间左闭右开

        // 2.判断其实是否为符号
        if(s[0] == '+' || s[0] == '-') s = s.substr(1);// s = 提取到[1,end)
        if(s.empty()) return false;

        // 3.  (.e或者只有.)是错误的
        if(s[0] == '.' && (s.size() == 1 || s[1] == 'e' || s[1] == 'E')) return false;

        // e后面必必须是整数,且不能什么都没有
        int dot = 0, e = 0; // .个数于e个数
        for(int i = 0; i < s.size(); i++){
            if(s[i] == '.'){
                // .个数大于1,或者.出现在e后面
                if(dot > 0 || e > 0) return false;
                dot++;
            }else if(s[i] == 'e' || s[i] == 'E'){
                // e的前后不能什么都没有,e只能出现一次
                if(!i || i + 1 == s.size() || e > 0) return false;
                // e后面跟符号,符号后不能什么都没有
                if(s[i + 1] == '+' || s[i + 1] == '-'){
                    if(i + 2 == s.size()) return false;
                    i++; // 不要在判断符号了
                }

                e++;
            }else if(s[i] < '0' || s[i] > '9') return false;
        }

        return true;
    }
};
相关推荐
_日拱一卒6 小时前
LeetCode:207课程表
java·数据结构·算法·leetcode·职场和发展
风筝在晴天搁浅9 小时前
美团 LeetCode 692.前K个高频单词
算法·leetcode·职场和发展
z2005093010 小时前
今日算法(回溯子集)(模版题)
数据结构·算法·leetcode
YL2004042611 小时前
071字符串解码
数据结构·leetcode
z2005093013 小时前
今日算法(回溯子集)
数据结构·算法·leetcode
Hesionberger13 小时前
巧用异或找出唯一数字(多解)
java·数据结构·python·算法·leetcode
菜菜的顾清寒14 小时前
力扣HOT100(47) 二叉树的层序遍历
算法·leetcode·深度优先
sheeta199815 小时前
LeetCode 每日一题笔记 日期:2026.05.31 题目:2126. 摧毁小行星
笔记·算法·leetcode
INGNIGHT15 小时前
984.不含 AAA 或 BBB 的字符串(贪心)
开发语言·算法·leetcode
人道领域15 小时前
【LeetCode刷题日记】538.把二叉搜索树转换为累加树
java·开发语言·后端·算法·leetcode