首页 > 代码库 > 【leetcode刷题笔记】Valid Number
【leetcode刷题笔记】Valid Number
Validate if a given string is numeric.
Some examples:"0"
=> true
" 0.1 "
=> true
"abc"
=> false
"1 a"
=> false
"2e10"
=> true
题解:题目不难,就是有点麻烦,要注意的地方很多,总结一下:
- 前面和后面的空格要用s.trim()去掉;
- 前导的‘+‘和‘-‘号需要忽略;
- 小数点只能出现一次,且不能出现在e后面;
- 指数符号e只能出现一次,而且它的前面和后面都要有数字;
- 除了前导的‘+‘和‘-‘外,还可以在符号e后面出现‘+‘和‘-‘,但只能在e后面。
代码如下:
1 public class Solution { 2 public boolean isNumber(String s) { 3 if(s == null || s.length() == 0) 4 return false; 5 6 s = s.trim(); 7 if(s.length() == 0) 8 return false; 9 10 int i = 0;11 if(s.charAt(0) == ‘+‘ || s.charAt(0) == ‘-‘)12 i++;13 14 boolean hasDot = false;15 boolean hasExp = false;16 boolean num = false;17 18 while(i<s.length()){19 char now = s.charAt(i);20 if(now >= ‘0‘ && now <= ‘9‘)21 {22 num = true;23 }24 else if(now == ‘.‘){25 if(hasDot || hasExp)26 return false;27 hasDot = true;28 }29 else if(now == ‘e‘){30 if(hasExp || num == false)31 return false;32 hasExp = true;33 num = false;34 }35 else if(now == ‘+‘ || now == ‘-‘){36 if(s.charAt(i-1) != ‘e‘)37 return false;38 }39 else40 return false;41 i++; 42 }43 return num;44 }45 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。