class Solution {
public boolean isNumber(String s) {
if(s == null || s.length() == 0) return false;
int i = 0;
int n = s.length();
while(i < n && Character.isWhitespace(s.charAt(i))){
i++;
}
if(i < n && (s.charAt(i) == '+' || s.charAt(i) == '-')){
i++;
}
boolean isDigits = false;
while(i < n && Character.isDigit(s.charAt(i))){
i++;
isDigits = true;
}
if(i < n && s.charAt(i) == '.'){
i++;
while(i < n && Character.isDigit(s.charAt(i))){
isDigits = true;
i++;
}
}
if(i < n && s.charAt(i) == 'e' && isDigits){
i++;
isDigits = false;
if(i < n && (s.charAt(i) == '+' || s.charAt(i) == '-')){
i++;
}
while(i < n && Character.isDigit(s.charAt(i))){
i++;
isDigits = true;
}
}
while(i < n && Character.isWhitespace(s.charAt(i))){
i++;
}
return isDigits && i == s.length();
}
}