請實現一個函數用來判斷字符串是否表示數值(包括整數和小數)。例如,字符串"+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; } }