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

leetcode43. 字符串相乘

作者: 今天不想掉头发 | 来源:发表于2019-08-02 08:30 被阅读0次

字符串相乘,通过模拟竖乘的方式,并使用一个数组来记录每一位上的结果

/**
 * 字符串相乘(大数相乘)
 */
public class Multiply {
    public static String multiply(String num1, String num2) {
        if (num1.equals("0") || num2.equals("0")) {
            return "0";
        }
        int length1 = num1.length();
        int length2 = num2.length();
        StringBuilder str = new StringBuilder();

        int[] arrayInt = new int[length1 + length2];

        // 就是一个模拟竖乘的过程,对于乘积大于10的数,还会向前进位
        for (int i = length1 - 1; i >= 0; i--) {
            for (int z = length2 - 1; z >= 0; z--) {
                int number1 = num1.charAt(i) - 48;
                int number2 = num2.charAt(z) - 48;
                // 向前的总是要进位的
                arrayInt[i + z] += number1 * number2;
                // 这里确保了当第0位是大于10的时候不会再往前进位,防止出现错误,直接将第0位的用来生成string就可以了
                if (arrayInt[i + z] >= 10 && (i + z) != 0) {
                    // 这里注意先后顺序以及符号,向前的总是要进位的
                    arrayInt[i + z - 1] += arrayInt[i + z] / 10;
                    arrayInt[i + z] = arrayInt[i + z] % 10;
                }
            }
        }

        for (int i = 0; i <= length1 + length2 - 2; i++) {
            str.append(arrayInt[i]);
        }

        return str.toString();
    }

    public static void main(String[] args) {
        String num1 = "999";
        String num2 = "99";

        System.out.println(multiply(num1, num2));
    }
}

相关文章

  • leetcode43. 字符串相乘

  • leetcode43. 字符串相乘

    字符串相乘,通过模拟竖乘的方式,并使用一个数组来记录每一位上的结果

  • Python3的字符串使用

    字符串可以相加,相乘

  • 字符串相乘

    题目 Given two non-negative integers num1 and num2 represen...

  • 字符串相乘

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

  • 字符串相乘

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

  • 字符串相乘

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

  • 字符串相乘

    字符串相乘   在 Python 语言中,算术运算符的“+”和“*”是可以对字符串进行操作的,如字符串拼接(str...

  • LeetCode:字符串相乘

    字符串相乘 - LeetCode[https://leetcode-cn.com/problems/multipl...

  • python的数据类型——字符串

    生成字符串 Python中可以使用一对单引号''或者双引号""生成字符串。 简单操作 加法: 字符串与数字相乘: ...

网友评论

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

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