此处只贴出了思路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;
}
} 
京公网安备 11010502036488号