Validate if a given string is numeric.
Some examples:
"0"
=> true
" 0.1 "
=> true
"abc"
=> false
"1 a"
=> false
"2e10"
=> true
Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.
public boolean isNumber(String s) { // Start typing your Java solution below // DO NOT write main() function if(s==null||s.length()==0){ return false; } //continuous zeros from beginning since begin is true int cont = 0; boolean hasDot = false; boolean begin = false; boolean end = false; boolean hasSign = false; boolean hasE = false; for(int i=0;i<s.length();i++){ char c = s.charAt(i); if(c=='+'||c=='-'){ if(hasSign||begin){ return false; }else{ hasSign = true; } continue; } if(c=='e'){ if(hasE||!begin){ return false; }else{ return isInteger(s.substring(i+1)); //return true; } } if(c=='.'){ if(hasDot||end){ return false; }else{ hasDot = true; } continue; } if(c==' '){ if((begin ||hasSign) && !end){ end=true; } continue; } if(!(isDigit(s,i))){ return false; }else{ if(end){ return false; }else{ if(!begin){ begin=true; } } } } if(!begin){ return false; } return true; } public boolean isInteger(String s){ if(s==null||s.length()==0){ return false; } if(s.length()==1 && isDigit(s,0)){ return true; } char c = s.charAt(0); if(c=='0'){ return ifAllSpace(s.substring(1)); } int zeors = 0; for(int i=0;i<s.length();i++){ if(i==0){ if(c=='+'||c=='-'){ return isIntegerWithoutSign(s.substring(i+1)); }else if(!isDigit(s,i)){ return false; } }else if(!isDigit(s,i)){ if(c==' '){ return ifAllSpace(s.substring(i+1)); }else{ return false; } } } return true; } public boolean ifAllSpace(String s){ for(int i=0;i<s.length();i++){ if(s.charAt(i)!=' '){ return false; } } return true; } public boolean isIntegerWithoutSign(String s){ if(s==null||s.length()==0){ return false; } if(s.length()==1 && isDigit(s,0)){ return true; } char c = s.charAt(0); if(c=='0'){ return false; } for(int i=0;i<s.length();i++){ if(!isDigit(s,i)){ if(c==' '){ return ifAllSpace(s.substring(i)); }else{ return false; } } } return true; } public boolean isDigit(String s,int index){ char c = s.charAt(index); if(c<(int)'0' || c>(int)'9'){ return false; } return true; }