검지offer: 수치를 나타내는 문자열

1404 단어 sword2offer
시험 문제: 문자열이 수치를 표시하는지 아닌지를 판단하는 함수를 실현하십시오. (정수와 소수를 포함합니다.)예를 들어 문자열'+100','5e2','-123','3.1416'과 -1E-16'은 모두 수치를 나타낸다.그러나'12e','1a3.14','1,2.3','±5'와'12e+4.3'은 모두 아니다.코드:
public class Solution {
    public boolean isNumeric(char[] str) {
        int len = str.length;
        //    
        if(len==0) return false;
        int start = (str[0]=='+'||str[0]=='-')?1:0;
        //      +-,      
        if(start==1 && len==1) return false;
        //          
        if( (str[start]'9')&&str[start]!='.' ) return false;
        
        int flag1 = 0;
        int flag2 = 0;
        for(int i=start; i='0' && c<='9'){
                continue;
            }else if(c=='e'||c=='E'){
                //     eE,           
                if(flag1!=0 || i==len-1) return false;
                flag1 = i;
                if(str[i+1]=='-'||str[i+1]=='+'){
                    i++;
                }
            }else if(c=='.'){
                //     .,     e  
                if(flag2!=0 || (flag1!=0)) return false;
                flag2 = i;
            }else{
                return false;
            }
        }
        return true;
    }
}

좋은 웹페이지 즐겨찾기