1 public class Solution {
2 public boolean isNumber(String s) {
3 // IMPORTANT: Please reset any member data you declared, as
4 // the same Solution instance will be reused for each test case.
5 if(s==null)
6 return false;
7 char[] sArr = s.trim().toCharArray();
8
9 if(sArr.length==0)
10 return false;
11 if(sArr.length==1&&!Character.isDigit(sArr[0]))
12 return false;
13
14 boolean decimalFound = false;
15 boolean eFound = false;
16 int end = sArr.length-1;
17 for(int i=0;i<=end;i++){
18 char nextChar = i>=end?'x':sArr[i+1];
19 char prevChar = i<=0?'x':sArr[i-1];
20 switch(sArr[i]){
21 case '+':
22 case '-':
23 if(prevChar!='e'&&i!=0)
24 return false;
25 if(prevChar=='e'&&i==end)
26 return false;
27 if (i==0&&nextChar=='e')
28 return false;
29 break;
30 case '.':
31 if(decimalFound || eFound)
32 return false;
33 if(i>=end && i<=0)
34 return false;
35 if(!Character.isDigit(prevChar) && !Character.isDigit(nextChar))
36 return false;
37 decimalFound = true;
38 break;
39 case 'e':
40 if(eFound)
41 return false;
42 if(!Character.isDigit(prevChar) && !Character.isDigit(nextChar)
43 &&nextChar!='-'|| end==i || i==0){
44 return false;
45 }
46 eFound = true;
47 break;
48 case ' ':
49 return false;
50 default:
51 if(!Character.isDigit(sArr[i]))
52 return false;
53 }
54
55 }
56 return true;
57 }
58 }