字符串相乘

Posted thewinter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串相乘相关的知识,希望对你有一定的参考价值。

 题目描述:

技术图片

 

class Solution {
    public String multiply(String num1, String num2) {
        /*
            问题的精华在于,乘积在数组中的位置,下标为i的被乘数,乘以下标为j的乘数,数字总是存在
            下标i+j+1的位置上。123*456 中,2*5的结果存在数组的1+1+1 = 3即下标为3的位置。
        */
        int n1 = num1.length()-1;
        int n2 = num2.length()-1;
        if(n1 < 0 || n2 < 0) return "";
        int[] mul = new int[n1+n2+2];
        for(int i = n1;i>=0;i--){
            for(int j = n2; j>=0;j--){
                
            //算进位
            mul[i+j] +=   ((num1.charAt(i)-‘0‘) * (num2.charAt(j)-‘0‘)+mul[i+j+1])/10;
            //本位置的值
            mul[i+j+1] = ((num1.charAt(i)-‘0‘) * (num2.charAt(j)-‘0‘)+mul[i+j+1])%10;
                
              
            }
        }
        
        
        StringBuilder sb = new StringBuilder();
        int i = 0;
       
        while(i < mul.length-1 && mul[i] == 0) 
            i++;
        for(; i < mul.length; ++i)
            sb.append(mul[i]);
        return sb.toString();
    }
}

  

以上是关于字符串相乘的主要内容,如果未能解决你的问题,请参考以下文章

实现两个大数相乘

LeetCode 字符串相乘

求两个大整数相乘的积,数字长度在127个字符之内。

[LeetCode]415. 字符串相加43. 字符串相乘

精选力扣500题 第72题 LeetCode 43. 字符串相乘c++/java详细题解

请问JavaScript中如何处理数字和字符串相乘的情况?