Valid Number

 1 public class Solution { // don't forget 'break' 'if(s.length()<=0) return false;' should be after trim
 2     public boolean isNumber(String s) {
 3         s = s.trim();
 4         if(s.length()<=0) return false;
 5         boolean eFound = false;
 6         boolean dFound = false;
 7         int end = s.length()-1;
 8         for(int i=0;i<=end;i++){
 9             char pre = i==0?'x':s.charAt(i-1);
10             char next = i==end?'x':s.charAt(i+1);
11             char c = s.charAt(i);
12             switch(c){
13                 case '+':
14                 case '-':
15                     if(i==end) return false;
16                     if(next=='e') return false;
17                     if(i!=0 && pre!='e') return false;
18                     break;
19                 case '.':
20                     if(eFound||dFound) return false;
21                     if(!Character.isDigit(pre) && !Character.isDigit(next)) return false;
22                     dFound = true;
23                     break;
24                 case 'e':
25                     if(eFound) return false;
26                     if(i==0 || i==end) return false;
27                     if(!Character.isDigit(pre) && pre!='.') return false;
28                     eFound = true;
29                     break;
30                 case ' ': return false;
31                 default: if(!Character.isDigit(c))return false;
32             }
33         }
34         return true;
35     }
36 }
View Code

 

posted @ 2014-02-06 14:34  krunning  阅读(105)  评论(0编辑  收藏  举报