首页 > 代码库 > 【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


 

题解:题目不难,就是有点麻烦,要注意的地方很多,总结一下:

  1. 前面和后面的空格要用s.trim()去掉;
  2. 前导的‘+‘和‘-‘号需要忽略;
  3. 小数点只能出现一次,且不能出现在e后面;
  4. 指数符号e只能出现一次,而且它的前面和后面都要有数字;
  5. 除了前导的‘+‘和‘-‘外,还可以在符号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 }