65. Valid Number

来源:互联网 发布:admaster数据分析师 编辑:程序博客网 时间:2024/05/22 04:41
class Solution {
    public boolean isNumber(String s) {
        //String test=s;
        //String test="   +11111.e+1   ";

         String re_rest=s;
        String test=re_rest.replace("-","+");
        String str[] = test.split(" ");
        boolean one_blank=false;
        boolean ans=false;


        int nums=0;



        for(int i=0;i<str.length;i++){
            if(! str[i].isEmpty()){
                nums++;
                test=str[i];
            }
        }

        int point=0;

        int num_e=0;
        int num_zf=0;
        char[] a=test.toCharArray();
        charToByteAscii ascii= new charToByteAscii();
        System.out.println(test);
        for (int i=0;i<a.length && nums==1;i++){
            int tmp_i=ascii.charToByteAscii(a[i]);
            if((tmp_i<=47||tmp_i>=58) && tmp_i!=46&&tmp_i!=101&&tmp_i!=43){//是否出现非+ - . e
                nums=2;
                ans=false;
                break;
            }else if(tmp_i==101){//出现次数 2
                num_e++;
                if(num_e>=2 || i==a.length-1){
                    nums=2;
                    ans=false;
                    break;
                }else if((point==1||num_zf==1) && i==1){
                    nums=2;
                    ans=false;
                    break;
                }
            }
            else if(tmp_i==46){//点出现次数 2
                point++;
                if(point>=2){
                    nums=2;
                    ans=false;
                    break;
                }

            }
            else if(tmp_i==43){//+ -出现次数小于3

                num_zf++;
                if(num_zf>2){
                    nums=2;
                    ans=false;
                    break;
                }

            }


        }


        if(nums==1){//判断空格

            if(num_zf==2){

                if(a.length<5){
                    one_blank=false;
                    ans=false;
                }else if(ascii.charToByteAscii(a[0])==43 && num_e==1){
                    if(test.contains("e+")){
                        String[] strings_zf=test.split("e\\+");
                        System.out.println(strings_zf[0]);
                        System.out.println(strings_zf[1]);

                        if(strings_zf[1].contains(".")==false && strings_zf[0].length()>1&&strings_zf[1].length()>0){
                            if(point==1 && a.length>5){
                                one_blank=true;
                                ans=true;
                            }else if(point==0){
                                one_blank=true;
                                ans=true;
                            }


                        }
                    }


                }

            }else if(num_zf==1){
                //System.out.println(ascii.charToByteAscii(a[0]));
                if(ascii.charToByteAscii(a[0])==43){

                 if(num_e==1){
                        if(point==0){
                            String[] strings_zf=test.split("e");
                            System.out.println(strings_zf[0]);
                            if(strings_zf[1].contains(".")==false && strings_zf[1].length()>0){

                                if(point==1 && a.length>4){
                                    one_blank=true;
                                    ans=true;
                                }else if(point==0){
                                    one_blank=true;
                                    ans=true;
                                }
                            }
                        }else {
                            if(a.length>3 && test.indexOf(".")<test.indexOf("e")){
                                one_blank=true;
                                ans=true;

                            }
                        }

                    }else if(point==1&&a.length>2){
                        one_blank=true;
                        ans=true;
                    }else if(point==0&&a.length>1){
                        one_blank=true;
                        ans=true;
                    }

                }else if(num_e==1){
                    //System.out.println(111);
                    if(test.contains("e+") && a.length>3 ){
                        System.out.println(111);
                        String[] strings_zf=test.split("e\\+");
                        System.out.println(strings_zf[0]);
                        System.out.println(strings_zf[1]);

                        if(point==1){
                            if(strings_zf[0].contains(".") && strings_zf[0].length()>1&&strings_zf[1].length()>0&&strings_zf[1].contains("+")==false&&strings_zf[0].contains("+")==false){
                                one_blank=true;
                                ans=true;
                            }
                        }else {
                            if(strings_zf[0].length()>=1&&strings_zf[1].length()>0&&strings_zf[1].contains("+")==false&&strings_zf[0].contains("+")==false){
                                one_blank=true;
                                ans=true;
                            }
                        }
                    }


                }

            }else if(num_zf==0){

                if(point==0 && num_e==0){
                    one_blank=true;
                    ans=true;
                }else if(point==0 && num_e==1){
                    if(ascii.charToByteAscii(a[0])!=101&&ascii.charToByteAscii(a[a.length-1])!=101){
                        one_blank=true;
                        ans=true;
                    }
                }else if(point==1&&num_e==0){
                    if(a.length>1){
                        one_blank=true;
                        ans=true;
                    }
                }else if(point==1&&num_e==1 &&a.length>3){
                    if(test.indexOf(".")<test.indexOf("e")){
                        one_blank=true;
                        ans=true;
                    }
                }



            }






        }else{

            one_blank=false;
            ans=false;
        }



        System.out.print(ans);
        return ans;
    }
}



class charToByteAscii{
    public byte charToByteAscii(char ch){
        byte byteAscii = (byte)ch;

        return byteAscii;
    }
    public boolean c47To58(char ch){
        byte byteAscii = (byte)ch;

        if(byteAscii>47 && byteAscii<58){
            return true;
        }else {
            return false;
        }


    }

}
原创粉丝点击