leetcode Reverse Integer 反轉數字 第七題

import java.util.Vector;

import static java.lang.Math.pow;

public class ReverseInteger_7 {

    /**
     * 將數字分解,裝到vector中,
     * 從vector中轉換爲數字,length<10可直接組裝,length = 10;需要進行判斷
     * @param x
     * @return
     */
    public  static  int reverse(int x) {
        boolean flag = false;
        if (x > 0){
            flag = true;
        }
        Vector<Integer> vector = integerToVec(x);
        int vecLen = vector.size();
        if(vecLen < 10){
            // 可以帶着符號直接輸出
            return  vectorToInteger(vector);
        }
        int[] intUtil ={2,1,4,7,4,8,3,6,4};
        if(vecLen == 10) {
            if (Math.abs(vector.get(0)) > 2) {
                return 0;
            } else if (Math.abs(vector.get(0)) < 2) {
                return vectorToInteger(vector);
            } else {
                if (Math.abs((vector.get(1))) > 1) {
                    return 0;
                } else if (Math.abs((vector.get(1))) < 1) {
                    return vectorToInteger(vector);
                } else {
                    if (Math.abs((vector.get(2))) > 4) {
                        return 0;
                    } else if (Math.abs((vector.get(2))) < 4) {
                        return vectorToInteger(vector);
                    } else {
                        if (Math.abs((vector.get(3))) > 7) {
                            return 0;
                        } else if (Math.abs((vector.get(3))) < 7) {
                            return vectorToInteger(vector);
                        } else {
                            if (Math.abs((vector.get(4))) > 4) {
                                return 0;
                            } else if (Math.abs((vector.get(4))) < 4) {
                                return vectorToInteger(vector);
                            } else {
                                if (Math.abs((vector.get(5))) > 8) {
                                    return 0;
                                } else if (Math.abs((vector.get(5))) < 8) {
                                    return vectorToInteger(vector);
                                } else {
                                    if (Math.abs((vector.get(6))) > 3) {
                                        return 0;
                                    } else if (Math.abs((vector.get(6))) < 3) {
                                        return vectorToInteger(vector);
                                    } else {
                                        if (Math.abs((vector.get(7))) > 6) {
                                            return 0;
                                        } else if (Math.abs((vector.get(7))) < 6) {
                                            return vectorToInteger(vector);
                                        } else {
                                            if (Math.abs((vector.get(8))) > 4) {
                                                return 0;
                                            } else if (Math.abs((vector.get(8))) < 4) {
                                                return vectorToInteger(vector);
                                            } else {
                                                if ((flag == true && vector.get(9) > 7) || (flag == false && vector.get(9) > 8)) {
                                                    return 0;
                                                } else if ((flag == true && vector.get(9) <= 7) || (flag == false && vector.get(9) <= 8)) {
                                                    return vectorToInteger(vector);
                                                }
                                            }
                                        }

                                    }
                                }
                            }
                        }
                    }
                }

            }
        }
        return 0;

    }

    public static Vector<Integer> integerToVec(int x){
        Vector<Integer> vector = new Vector<>();
        while(true) {
            vector.add(x % 10);
            x = x / 10;
            if(x == 0){
                break;
            }
        }
        return vector;
    }
    public static Integer vectorToInteger(Vector<Integer> vector){
        int vecLen = vector.size();
        Integer sum = 0;
        int i =0;
        while (vecLen != 0){
           sum += new Double(vector.get(i++) * pow(10, vecLen - 1)).intValue();
            --vecLen;
        }
        return sum;
    }
    public static void main(String[] args){
       // ReverseInteger_7 reverseInteger_7 = new ReverseInteger_7();

        System.out.println(reverse(1463847412));
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章