Skip to content

LeetCode 算法题解与代码实现

java
class Solution {
    public String multiply(String num1, String num2) {
        if (num1.charAt(0) == '0' || num2.charAt(0) == '0')
            return "0";

        String ans = "0";
        for (int i = num2.length() - 1; i >= 0; i--) {
            StringBuilder sb = new StringBuilder();
            int y = num2.charAt(i) - '0';
            int cin = 0;
            for (int j = num1.length() - 1; j >= 0; j--) {
                int x = num1.charAt(j) - '0';
                int product = x * y + cin;
                cin = 0;
                if (product >= 10) {
                    cin = product / 10;
                    product = product % 10;
                }
                sb.append(product);
            }
            if (cin != 0) {
                sb.append(cin);
            }
            sb.reverse();
            for (int j = 0; j < num2.length() - 1 - i; j++) {
                sb.append(0);
            }

            ans = add(ans, sb.toString());
        }
        return ans;
    }


    public String add(String num1, String num2) {
        int cin = 0;
        int i = num1.length() - 1, j = num2.length() - 1;
        StringBuilder sb = new StringBuilder();
        while (i >= 0 || j >= 0 || cin == 1) {
            int n1 = 0, n2 = 0;
            if (i >= 0) {
                n1 = num1.charAt(i) - '0';
                i--;
            }
            if (j >= 0) {
                n2 = num2.charAt(j) - '0';
                j--;
            }
            int sum = n1 + n2 + cin;
            cin = 0;
            if (sum >= 10) {
                cin = 1;
                sum -= 10;
            }
            sb.append(sum);
        }
        return sb.reverse().toString();
    }
}

Personal Knowledge Base