表示数值的字符串
问题陈述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、“±5”、"-1E-16"及"12e+5.4"都不是。
解题思路
**常规思路:**根据条件判断可能出现的情况,最终返回结果。
**进阶解法:**自动状态机。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| class Solution{ public isnumber(String s){ if(s==null||s.length()==0) return false; boolean isDigit=false,isDot=false,is_eE=false; char[] ch=s.trim().toCharArray(); for(int i=0;i<ch.length;i++){ if(ch[i]>='0'&&ch[i]<='9') isDigit=true; else if(ch[i]=='.'){ if(isDot||is_eE) return false; isDot=true; } else if(ch[i]=='e'||ch[i]=='E'){ if(!isDigit||is_eE) return false; is_eE=true; isDigit=false; } else if(ch[i]=='+'||ch[i]=='-'){ if(i!=0&&ch[i-1]!='e'&&ch[i-1]!='E') return false; } else return false; } return isDigit; } }
|