兩個數組相加

輸入:
123
123
輸出:456

輸入:
9
9
輸出:
18
public class Main {

    public int[] add(int[] a, int[] b) {
        if (a.length == b.length) {
            for (int i = a.length - 1; i > 0; i--) {
                a[i] = a[i] + b[i];
                if (a[i] > 9) {
                    a[i] = a[i] % 10;
                    a[i - 1] = a[i - 1] + 1;
                }
            }
            a[0] = a[0] + b[0];
            if (a[0] > 9) {
                a[0] = a[0] % 10;
                int[] newA = new int[a.length + 1];
                for (int i = 0; i < a.length; i++) {
                    newA[i + 1] = a[i];
                }
                newA[0] = 1;
                return newA;
            } else {
                return a;
            }
        } else {
            int[] bigger = a.length > b.length ? a : b;
            int[] smaller = a.length < b.length ? a : b;
            int temp = bigger.length - smaller.length;
            for (int i = smaller.length - 1; i >= 0; i--) {
                bigger[i + temp] = smaller[i] + bigger[i + temp];
                if (bigger[i + temp] > 9) {
                    bigger[i + temp] = bigger[i + temp] % 10;
                    bigger[i + temp - 1] = bigger[i + temp - 1] + 1;
                }
            }

            for (int i = temp; i > 0; i--) {
                if (bigger[i] > 9) {
                    bigger[i] = bigger[i] % 10;
                    bigger[i - 1] = bigger[i - 1] + 1;
                }
            }
            if (bigger[0] > 9) {
                bigger[0] = bigger[0] % 10;
                int[] newA = new int[bigger.length + 1];
                for (int i = 0; i < bigger.length; i++) {
                    newA[i + 1] = bigger[i];
                }
                newA[0] = 1;
                return newA;
            } else {
                return bigger;
            }
        }
    }

    public static void main(String[] args) {
        Main main = new Main();
        int [] arr1 = {9};
        int [] arr2 = {9};
        int[] temp = main.add(arr1, arr2);
        for (int i = 0; i < temp.length; i++) {
            System.out.print(temp[i] + " ");
        }
    }
}

 

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