表示数值的字符串

表示数值的字符串

http://www.nowcoder.com/questionTerminal/6f8c901d091949a5837e24bb82a731f2

此处只贴出了思路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;
    }
}


全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务