剑指offer--20表示数值的字符串

Posted Anrys

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer--20表示数值的字符串相关的知识,希望对你有一定的参考价值。

剑指offer--20表示数值的字符串

题目

在这里插入图片描述

代码

class Solution {
    public boolean isNumber(String s) {
        if (s == null || s.length() == 0) return false;
        s = s.trim();//去掉首位空格
        boolean numFlag = false;
        boolean dotFlag = false;
        boolean eFlag = false;
        for (int i = 0; i < s.length(); i++) {
            //判定为数字,则标记numFlag
            if (s.charAt(i) >= '0' && s.charAt(i) <= '9') {
                numFlag = true;
                //判定为.  需要没出现过.并且没出现过e
            } else if (s.charAt(i) == '.' && !dotFlag && !eFlag) {
                dotFlag = true;
                //判定为e,需要没出现过e,并且出过数字了
            } else if ((s.charAt(i) == 'e' || s.charAt(i) == 'E') && !eFlag && numFlag) {
                eFlag = true;
                numFlag = false;//为了避免123e这种请求,出现e之后就标志为false,若再出现数字就变true
                //判定为+-符号,只能出现在第一位或者紧接e后面
            } else if ((s.charAt(i) == '+' || s.charAt(i) == '-') && (i == 0 || s.charAt(i - 1) == 'e' || s.charAt(i - 1) == 'E')) {
                //其他情况,都是非法的
            } else return false;
        }return numFlag;
    }
}
class Solution {
    public boolean isNumber(String s) {
        if(s == null || s.length() == 0) return false;
        s = s.trim();
        try{ double a = Double.parseDouble(s); }
        catch (Exception e){ return false;}
        char c = s.charAt(s.length()-1);
        return (c >= '0' && c <= '9') || c == '.';
    }
}

结果

在这里插入图片描述

以上是关于剑指offer--20表示数值的字符串的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode(剑指 Offer)- 20. 表示数值的字符串

剑指offer20表示数值的字符串

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

剑指 Offer 20. 表示数值的字符串(暴力,Java)

剑指Offer数据结构

乱序版 ● 剑指offer每日算法题打卡题解——模拟字符串 (题号62,29)