表示数值的字符串
表示数值的字符串
https://www.nowcoder.com/practice/6f8c901d091949a5837e24bb82a731f2?tpId=13&&tqId=11206&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
public boolean isNumeric(char[] str) { if(str.length == 0) return false; int index = 0; int ecount = 0; //e 的数量 int pcount = 0; //符号的数量 if(str[index] == '+' || str[index] == '-') index++; for(int i = index; i < str.length; i++){ if(str[i] == '-' || str[i] == '+'){ // +-号只能放在数字最前面,或者eE的后面,最前面已经在前面先做了判断 if(str[i-1] != 'e' && str[i-1] != 'E') return false; continue; } if(str[i] == 'e' || str[i] == 'E'){ ecount++; if(ecount > 1) //e已经出现过了,不能再出现了 return false; // e不能放在第一位,e的前面必须是数组,e不能放在最后以为 if(i == 0 || str[i-1] < 48 || str[i-1] > 57 || i == str.length-1) return false; pcount++; //为什么要加呢?因为e的后面就不能加小数点了 continue; } if(str[i] == '.'){ pcount++; if(pcount > 1) //出现过小数点了,不能再出现了 return false; continue; } //如果出现其他符号直接返回false if((str[i] < 48 || str[i] > 57) && (str[i] != 'e') && (str[i] != 'E') && (str[i] != '.') ) return false; } return true; }
剑指offer 文章被收录于专栏
为刷过的每一道题都书写一篇题解,便于重复练习~