两个大数相加

2020-12-02  本文已影响0人  小胡子哥灬
public class LeetCode {
    /**
     * 给定两个字符串数字(超出long的范围),算出两数相加的和。
     * 思路:
     * 1. 先比较两字符串的长度,小的在前面补0,
     * 2. char与int的互换 char c = i + '0', int i = c - '0'
     */
    public String towBigNumberAdd(String v1, String v2) {
        public String twoBigNumAdd (String v1, String v2){
            int len1 = v1.length();
            int len2 = v2.length();
            // 补齐v2的前面为 '0';
            String temp = "0";
            if (len1 > len2) {
                for (int i = 0; i < len1 - len2 - 1; i++) {
                    temp += "0";
                }
                v2 = temp + v2;
            } else if (len1 < len2) {
                for (int i = 0; i < len2 - len1 - 1; i++) {
                    temp += "0";
                }
                v1 = temp + v1;
            }
            int carray = 0;
            char[] array = new char[v1.length() + 1];
            for (int i = v1.length() - 1; i >= 0; i--) {
                int n1 = v1.charAt(i) - '0';
                int n2 = v2.charAt(i) - '0';
                int sum = n1 + n2 + carray;
                array[i + 1] = (char) (sum % 10 + '0');
                carray = (sum) / 10;

            }
            if (carray != 0) {
                array[0] = (char) (carray + '0');
                return new String(array);
            } else {
                return new String(array, 1, array.length - 1);
            }
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读