Valid Number

Validate if a given string can be interpreted as a decimal number.

Some examples: "0" => true " 0.1 " => true "abc" => false "1 a" => false "2e10" => true " -90e3 " => true " 1e" => false "e3" => false " 6e-1" => true " 99e2.5 " => false "53.5e93" => true " --6 " => false "-+3" => false "95a54e53" => false

Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one. However, here is a list of characters that can be in a valid decimal number:

  • Numbers 0-9

  • Exponent - "e"

  • Positive/negative sign - "+"/"-"

  • Decimal point - "."

Of course, the context of these characters also matters in the input.

思路:

去掉 手尾的空格

用i trace 现在都到哪了,根据正确 的格式来判断,注意trim后加一个空格

class Solution {
    public boolean isNumber(String s) {
        
        if(s== null || s.length() == 0){
            return false;
        }
        
        s = s.trim()+" ";//给最后的for循环 i < len 后 i == len 判断留的
        
        int i  = 0, len = s.length()-1;
        
        char[] charArr = s.toCharArray();
            
        if(charArr[i] == '+' || charArr[i] == '-'){
            i++;
        }
        
        int isDigit = 0, isPoint = 0;
        
        while(Character.isDigit(charArr[i]) || charArr[i] == '.'){
            if(Character.isDigit(charArr[i])){
                isDigit++;
            }
            
            else if(charArr[i] == '.'){
                isPoint++;
            }
            
            i++;
        }
        
        if(isDigit <= 0 || isPoint >1){
            return false;
        }
        
        if(charArr[i] == 'e'){
            i++;
            if(charArr[i] == '+' || charArr[i] == '-'){
                i++;
            }
            if(i == len){
                return false;
            }
            
            for(;i<len;i++){
                if(!Character.isDigit(charArr[i])){
                    return false;
                }
            }
            
            
        }
        
        return i == len;
        
        
    }
}

没有e的版本

Last updated