此处只贴出了思路1代码,思路2的代码没有重复再写,所以还没验证是否还有考虑不周全的地方。
思路1代码:
public class Solution { public boolean isNumeric(char[] str) { if(str==null||str.length<1) return false; int i=0; int numPointer=0; int numE=0; int numSig=0; if(str[0]=='+'||str[0]=='-') return subIsNumeric(str,i+1,numPointer,numE,numSig); return subIsNumeric(str,i,numPointer,numE,numSig); } public boolean subIsNumeric(char[] str,int i,int numPointer,int numE,int numSig){ if(i==str.length) return true; if(numE<1&& i<str.length-1 &&(str[i]=='e'||str[i]=='E')){ numE++; if(numSig<1&& i+1<str.length-1 &&(str[i+1]=='-'||str[i+1]=='+')){ numSig++; return subIsNumeric(str,i+2,numPointer,numE,numSig); } else if (str[i+1]<='9'&&str[i+1]>='0'){ return subIsNumeric(str,i+2,numPointer,numE,numSig); } else return false; } else if(numE==0&&numPointer<1&& i<str.length-1 &&str[i]=='.'){ numPointer++; if (str[i+1]<='9'&&str[i+1]>='0') return subIsNumeric(str,i+2,numPointer,numE,numSig); else return false; } else if(str[i]<='9'&&str[i]>='0') return subIsNumeric(str,i+1,numPointer,numE,numSig); else return false; } }