LeetCode: Multiply Strings 大数相乘

试题:
Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2, also represented as a string.

Example 1:

Input: num1 = “2”, num2 = “3”
Output: “6”
Example 2:

Input: num1 = “123”, num2 = “456”
Output: “56088”
Note:

The length of both num1 and num2 is < 110.
Both num1 and num2 contain only digits 0-9.
Both num1 and num2 do not contain any leading zero, except the number 0 itself.
You must not use any built-in BigInteger library or convert the inputs to integer directly.
代码:
解析

class Solution {
    public String multiply(String num1, String num2) {
        int num1len = num1.length();
        int num2len = num2.length();
        int[] mul = new int[num1len+num2len];
        
        for(int i=num1len-1; i>=0; i--){
            for(int j=num2len-1; j>=0; j--){
                int p1 = i+j, p2 = i+j+1;
                int tmp = (num1.charAt(i)-'0')*(num2.charAt(j)-'0');
                
                tmp += mul[p2];
                mul[p1] += tmp/10;
                mul[p2] = tmp%10;
            }
        }
        
        StringBuilder out = new StringBuilder();
        for(int num : mul){
            if(!(out.length()==0&&num==0)){
                out.append(num);
            }
        }
        return out.length()==0?"0":out.toString();
        
    }
}

猜你喜欢

转载自blog.csdn.net/qq_16234613/article/details/88857058
今日推荐