码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode Valid Number

时间:2015-11-10 07:00:26      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

原题链接在这里:https://leetcode.com/problems/valid-number/

可以按照正则表达式 regex来比照,如Method 1.

Method 2 是分类讨论,原string trim后从e拆开,前面部分可以有dot, 后面部分不可以有dot. 

Note: 注意trim后还需要再次检查是否长度为0.

AC Java:

 1 public class Solution {
 2     public boolean isNumber(String s) {
 3         /*
 4         //Method 1
 5         if(s.trim().isEmpty()){  
 6             return false;  
 7         }  
 8         String regex = "[-+]?(\\d+\\.?|\\.\\d+)\\d*(e[-+]?\\d+)?";  
 9         if(s.trim().matches(regex)){  
10             return true;  
11         }else{  
12             return false;  
13         } 
14         */
15         
16         if(s == null || s.length() == 0){
17             return false;
18         }
19         s = s.trim(); //去掉前后空格
20         String [] strArr = s.split("e");
21         if(s.length() == 0 || s.charAt(0) == ‘e‘ || s.charAt(s.length()-1) == ‘e‘ || strArr.length == 0 || strArr.length >2){
22             return false;
23         }
24         
25         for(int i = 0; i<strArr.length; i++){
26             String str = strArr[i];
27             boolean hasDot = false; //用来辨别最多可以有一个dot
28             if(str.charAt(0) == ‘+‘ || str.charAt(0) == ‘-‘){ //去掉正负号
29                 str = str.substring(1);
30             }
31             if(str.length() == 0){
32                 return false;
33             }
34             for(int j = 0; j<str.length(); j++){
35                 if(Character.isDigit(str.charAt(j))){       //数字跳过
36                     continue;
37                 }else if(str.charAt(j) == ‘.‘ && !hasDot){  //非数字遇到了dot
38                     if(i == 0 && str.length()>1){ //"5e1.7"
39                         hasDot = true;
40                     }else{ //"."
41                         return false;
42                     }
43                 }else{                                      //非数字,非dot或者已经有一个dot
44                     return false;  // ".."
45                 }
46             }
47         }
48         return true;
49     }
50 }

参考了这篇帖子:http://www.cnblogs.com/tonyluis/p/4507515.html

LeetCode Valid Number

标签:

原文地址:http://www.cnblogs.com/Dylan-Java-NYC/p/4951768.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!