65. Valid Number

一、题目

  1、审题

 

  2、分析

    判断所给字符串是否可以转化为小数类型。

 

二、解答

  1、思路:

    多层判断,转化为小数类型,可以很巧妙的采用多个 flag 进行记录是否符合浮点数定义:

    ①、"+" 或 “-” 符号只能出现在开头或则 e 的后一个字符

    ②、e 前边得有数字、后边得有整形数字

    ③、只能出现一次小数点 "."

public boolean isNumber(String s) {

        s = s.trim();
        boolean pointSeen = false;    // 出现了小数点
        boolean eSeen = false;        // 出现了 e
        boolean numberSeen = false;  // 出现了数字
        boolean numberAfterE = true;  // 数字出现在 e 后边
        
        for(int i = 0; i < s.length(); i++) {
            if('0' <= s.charAt(i) && s.charAt(i) <= '9') {
                numberSeen = true;
                numberAfterE = true;
            }
            else if(s.charAt(i)== '.' ) {
                if(eSeen || pointSeen)
                    return false;
                
                pointSeen = true;
            }
            else if(s.charAt(i) == 'e') {
                // e 前边得有数字
                if(eSeen || !numberSeen)    
                    return false;
                
                numberAfterE = false;
                eSeen = true;
            }
            else if(s.charAt(i) == '-' || s.charAt(i) == '+') {
                if(i != 0 && s.charAt(i-1) != 'e') 
                    return false;
            }
            else {
                return false;
            }
        }
        
        return numberSeen && numberAfterE;
    }

 

posted @ 2018-09-21 10:23  skillking2  阅读(171)  评论(0编辑  收藏  举报