ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

剑指 Offer 20. 表示数值的字符串

2022-02-09 01:33:00  阅读:117  来源: 互联网

标签:20 Offer int 小数点 length numCnt 字符串


剑指 Offer 20. 表示数值的字符串

这种大模拟题真的就是磨练心态的,太麻烦了,wa得没脾气。
总结起来就是一定要有数字,小数点前必须有数字并且小数点前面不能有e,e前面必须有数字且前面不能有e,有e之后为了有指数,需要重置\(numCnt\),符号必须出现在第一位或者在e后面。

class Solution {
    public boolean isNumber(String s) {
        if(s == null || s.length() == 0) {
            return false;
        }
        s = s.trim();
        int eCnt = 0, numCnt = 0, dotCnt = 0, symbolCnt = 0;
        for(int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if(c >= '0' && c <= '9') {
                // 出现数字直接加
                numCnt++;
            } else if(c == '.') {
                // 出现小数点,需要之前没有出现过.和e
                if(dotCnt != 0 || eCnt != 0) {
                    return false;
                } else {
                    dotCnt++;
                }
            } else if(c == 'e' || c == 'E') {
                // 出现了e,需要之前出现了数字且没有出现过e
                if(numCnt == 0 || eCnt != 0) {
                    return false;
                } else {
                    eCnt++;
                    numCnt = 0;
                }
            } else if(c == '+' || c == '-') {
                // 符号要出现在第一位
                if(i != 0 && (s.charAt(i - 1) != 'e' && s.charAt(i - 1) != 'E')) {
                    return false;
                } else {
                    symbolCnt++;
                }
            } else {
                return false;
            }
        }
        return numCnt > 0;

    }
}

标签:20,Offer,int,小数点,length,numCnt,字符串
来源: https://www.cnblogs.com/nullpointer-c/p/15873474.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有