美文网首页
43.字符串相乘

43.字符串相乘

作者: 夜空中最亮的星_6c64 | 来源:发表于2019-01-03 20:45 被阅读0次

题目描述:

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

示例:

示例 1:
输入: num1 = "2", num2 = "3";输出: "6"
示例 2:
输入: num1 = "123", num2 = "456";输出: "56088"

说明:

num1 和 num2 的长度小于110。
num1 和 num2 只包含数字 0-9。
num1 和 num2 均不以零开头,除非是数字 0 本身。

注意:

不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。

解答:

public static String multiply(String num1, String num2) {
        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--) {
                // 两个乘数的每一位进行相乘
                int midmul = (num1.charAt(i) - '0') * (num2.charAt(j) - '0');
                // 相乘结果+进位
                midmul += mul[i + j + 1];
                // 第i位和第j位相乘的结果在乘积中的位置为[i+j,i+j+1]
                // [i+j]需要累加;相当于结果高位【数组中为低位】
                mul[i + j] += midmul / 10;
                // [i+j+1]直接加余数即可
                mul[i + j + 1] = midmul % 10;
            }
        }
        StringBuilder sBuilder = new StringBuilder();
        int i = 0;
        while (i < mul.length - 1 && mul[i] == 0)
            // 截取前面的0
            i++;
        for (; i < mul.length; i++) {
            // 拼接字符串作为结果
            sBuilder.append(mul[i]);
        }
        return sBuilder.toString();
    }

技巧:

字符串相乘:可以当作大数相乘,处理每位相乘即可,最后拼接结果。

相关文章

  • LeetCode 43. 字符串相乘 | Python

    43. 字符串相乘 题目来源:力扣(LeetCode)https://leetcode-cn.com/proble...

  • 字符串乘法

    读完本文,你可以去力扣拿下如下题目: 43.字符串相乘[https://leetcode-cn.com/probl...

  • 43.字符串相乘

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

  • 43. 字符串相乘

  • 43. 字符串相乘

    1、思路   两数相乘时,乘数某位与被乘数某位相乘,所产生结果的位置是有规律的。具体规律如下:  乘数 num1 ...

  • 43. 字符串相乘

    自己解法 墨迹了两晚上,才写出来的字符串相乘,虽然写得很丑,还是记下来吧,至少思路是好理解的。基本就是从个位开始乘...

  • 43.字符串相乘

    题目描述: 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们...

  • 43. 字符串相乘

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

  • 43. 字符串相乘

    #### [https://leetcode-cn.com/problems/multiply-strings]4...

  • LeetCode 43.字符串相乘

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

网友评论

      本文标题:43.字符串相乘

      本文链接:https://www.haomeiwen.com/subject/kzwqrqtx.html