表示數值的字符串

題目:

請實現一個函數用來判斷字符串是否表示數值(包括整數和小數)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示數值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。

思路:

代碼:

public class Solution {
    public int i = 0;
    public boolean isNumeric(char[] str) {
        if(str == null){
            return false;
        }
        if(str[i] == '+' || str[i] == '-'){
            ++i;
        }
        if(i > str.length - 1){
            return false;
        }
        boolean numeric = true;
        scanDigits(str);
        if(i < str.length - 1){
            if(str[i] == '.'){
                i++;
                scanDigits(str);
                if(i <= (str.length -1) && (str[i] == 'e' || str[i] == 'E')){
                    numeric= isExponential(str);
                }
            }else if(str[i] == 'e' || str[i] == 'E'){
                numeric = isExponential(str);
            }else{
                numeric = false;
            }
        }
        return numeric && (i > str.length - 1);
    }
    public void scanDigits(char[] str){
        while(i <= (str.length -1) && str[i] >= '0' && str[i] <= '9'){
            i++;
        }
    }
    public boolean isExponential(char[] str){
        if(str[i] != 'e' && str[i] != 'E'){
            return false;
        }
        ++i;
        if(str[i] == '+' || str[i] == '-')
            ++i;
        if(i > str.length - 1){
            return false;
        }
        scanDigits(str);
        return (i > str.length - 1) ? true : false;
    }
}
發佈了72 篇原創文章 · 獲贊 20 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章