65. Valid Number

Hard
这道题搞懂了到底什么是valid就很简单

class Solution {
    public boolean isNumber(String s) {
        if (s == null || s.length() == 0){
            return false;
        }
        s = s.trim();
        //空值返回false
        //字符串前后的空白字符不影响字符串最终的结果
        //1.以及.1都是符合标准的小数,但是.不符合
        //'+','-'号只可能出现在字符串首位或是e之后
        //e的前后必须有数字,e前的数字可以为整数或是小数,e后的数字必须为正/负整数/0
        boolean numSeen = false;
        boolean numAfterE = false;
        boolean eSeen = false;
        boolean dotSeen = false;
        for (int i = 0; i < s.length(); i++){
            if (s.charAt(i) >= '0' && s.charAt(i) <= '9'){
                numSeen = true;
                numAfterE = true;
            } else if (s.charAt(i) == '+' || s.charAt(i) == '-'){
                if (i != 0 && s.charAt(i - 1) != 'e'){
                    return false;
                }
            } else if (s.charAt(i) == '.'){
                if (dotSeen || eSeen){
                    return false;
                }
                dotSeen = true;
            } else if (s.charAt(i) == 'e'){
                if (eSeen || !numSeen){
                    return false;
                }
                numAfterE = false;
                eSeen = true;
            } else {
                return false;
            }
        }
        return numSeen &&  numAfterE;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容