LeetCode刷题笔记 43. 字符串相乘

题目描述

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

示例 1:
输入: num1 = “123”, num2 = “456”
输出: “56088”

总结

LeetCode刷题笔记 43. 字符串相乘_第1张图片
SDC1是SDC2的优化

Sample & Demo Code 1

class Solution {
     
    public String multiply(String num1, String num2) {
     
        if(num1.equals("0")||num2.equals("0")) return "0";
        int len1 = num1.length();
        int len2 = num2.length();
        int[] list = new int[len1+len2];
        
        char[] nums1 = num1.toCharArray();
        char[] nums2 = num2.toCharArray();
        
        for(int i = len1-1; i >= 0; i--) {
     
            for(int j = len2-1; j >= 0; j--) {
     
                int temp = (nums1[i]-'0') * (nums2[j]-'0');
                temp += list[i+j+1];
                
                list[i+j] += temp / 10;     //注意这里是 +=
                list[i+j+1] = temp % 10;
            }
        }
        
        StringBuilder sb = new StringBuilder();
        for(int i=0;i<=len1+len2-1;i++)
            sb.append(list[i]);
        if(sb.charAt(0)=='0')
            sb = sb.deleteCharAt(0);

        return sb.toString();
    }
}

Sample & Demo Code 2

class Solution {
     
    public String multiply(String num1, String num2) {
     
        int len1 = num1.length()-1;
        int len2 = num2.length()-1;
        int[] list = new int[len1+len2+2];
        
        for(int i = len1; i >= 0; --i) {
     
            for(int j = len2; j >= 0; --j) {
     
                int temp = (num1.charAt(i)-'0') * (num2.charAt(j)-'0');
                temp += list[i+j+1];
                
                list[i+j] += temp / 10;     //注意这里是 +=
                list[i+j+1] = temp % 10;
            }
        }
        
        StringBuilder sb = new StringBuilder();
        int i = 0;
        while(i<list.length-1 && list[i]==0)
            i++;
        for(; i < list.length; i++)
            sb.append(list[i]);
        return sb.toString();
    }
}

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/multiply-strings

你可能感兴趣的:(LeetCode笔记)