请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
直接遍历判断
public class Solution { public boolean isNumeric(char[] str) { boolean hasE = false ; boolean hasDot = false ; boolean hasNum = false ; for(int i = 0;i < str.length;i++){ if(str[i] == '+'||str[i]=='-'){ if(i == 0)continue ; if(str[i-1] == 'e'||str[i-1] == 'E')continue ; return false ; }else if(str[i] == '.'){ if(hasE)return false ; if(hasDot)return false ; if(i!= 0 &&(str[i-1] < '0' || str[i-1] > '9')){ if(str[i-1]!='+' && str[i-1]!='-') return false ; } hasDot = true ; }else if(str[i] == 'e' || str[i] == 'E'){ hasE = true ; }else if(str[i] < '0' || str[i] > '9'){ return false ; }else{ if(hasE)hasNum = true ; } } if(hasE)return hasNum ; return true ; }}
新闻热点
疑难解答