Valid Number

题目地址:
https://leetcode.com/problems/valid-number/#/description

题目:
Validate if a given string is numeric.
Some examples:
"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true
Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one

解题思路:
这道题主要就是分四种情况来讨论:1.是数字; 2.是小数点; 3.是e; 4.是加号或者减号。


代码:

public boolean isNumber(String s) {
    s = s.trim();
    boolean pointSeen = false;
    boolean eSeen = false;
    boolean numberSeen = false;
    boolean numberAfterE = false;
    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'){
            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;
}


Comments

Popular Posts