leetcode剑指offer20:表示数值的字符串
2020-05-15 10:55
134 查看
该题一开始的思路还是比较复杂的,参考了答案
//设置了三个布尔变量,分别表示是否出现过数字,点e或者E
public static boolean isValid(String s){ //首先考虑边界情况, if(s.length()==0||s==null){ return false;} //对于大部分字符串的操作都是首先将其转化为字符串组,java中有一个可以去除掉首尾字空格符的函数 trim()函数 char[] str=s.trim().toCharArray(); boolean numseen=false; boolean dotseen=false; boolean eseen=false; for(int i=0;i<str.length;i++){ if(str[i]>='0'&&str[i]<='9'){ numseen=true; }else if(str[i]=='.'){ //字符.之前不允许出现e或者是.,因为按照leetcode所给的测试用例中 .之前不一定是要出现数字的,比如说 .1这个也表示正确的数字 if(dotseen||eseen){ return false; } dotseen=true; }else if(str[i]=='e'||str[i]=='E'){ //判断之前是不是出现过e或者没有出现数字 if(eseen||!numseen){ return false; } eseen=true; //同时将numsseen置为false;确保e或者E之后出现数字 numseen=false; }else if(str[i]=='-'||str[i]=='+'){ //这一步的操作是为了确保在-号或者正号没有出现在字符串的首位的时候 确保其出现在-||+的前面 if(i!=0&&str[i-1]!='e'&&str[i-1]!='E'){ return false; } }else{ //其他所有的情况都是false; return false; } } //最后返回numseen,表示整个字符串中是否出现过数字,如果一次都没出现过的话 就表明该字符串不能表示有效的数字,否则的话 就是true; return numseen; }
相关文章推荐
- 剑指Offer-20:表示数值的字符串
- 剑指offer--面试题20:表示数值的字符串
- 【剑指offer】面试题20:表示数值的字符串
- 剑指Offer 面试题20:表示数值的字符串 Java代码实现
- 剑指offer——表示数值的字符串
- 剑指offer:表示数值的字符串
- 2.1 剑指offer 表示数值的字符串
- 剑指offer(56):表示数值的字符串
- 剑指offer | 训练题52:表示数值的字符串
- 剑指offer——面试题54:表示数值的字符串
- 剑指Offer——表示数值的字符串
- 剑指offer---表示数值的字符串
- 剑指offer-----判断字符串是否表示数值(java版)
- 牛客网剑指offer之表示数值的字符串
- 剑指offer 表示数值的字符串
- 剑指offer 表示数值的字符串
- 剑指offer-[表示数值的字符串]-JavaScript实现
- 18、表示数值的字符串——剑指offer
- 剑指offer54 表示数值的字符串
- 剑指-面试题20 表示数值的字符串