劍指offer-表示數值的字符串

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

正則表達式正則表達式

    public boolean isNumeric(char[] str) {
        String s = String.valueOf(str);
        return s.matches("[+-]?[0-9]*(\\.[0-9]*)?([eE][+-]?[0-9]+)?");
    }

 

public class Solution {
    public boolean isNumeric(char[] str) {
        if(str.length<=0){
            return false;
        }
        int index =0;
        if(str[index]=='-'||str[index]=='+'){
            index++;
        }
        if(index==str.length){
            return false;
        }
        index = scanDigits(str,index);
        if(index<str.length&&str[index]=='.'){
            index++;
            index =scanDigits(str,index);
        }
        if(index<str.length&&(str[index]=='e'||str[index]=='E')){
            index++;
            if(index<str.length&&(str[index]=='-'||str[index]=='+')){
                index++;
            }
            if(index==str.length){
                return false;
            }
            index = scanDigits(str,index);
        }
        return index==str.length;
    }
    public int scanDigits(char[] str,int index){
        while(index<str.length&&str[index]>='0'&&str[index]<='9'){
            index++;
        }
        return index; 
    }
}
相關文章
相關標籤/搜索