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 }