lint0656. Multiply Strings

大数乘法:保存在String中的两个数,计算他们的乘法,结果保存在String中
下面四点要特别注意:

  1. 结果的位数最多是两个位数的和,所以定义一个len1+len2的数组
  2. 两个乘数的索引分别是i,j, 那么结果保存在num3[i+j+1]
  3. 注意进位,以及每轮最后的单独进位
  4. String类为字符串常量,不可修改,必须用StringBuilder来保存中间结果
package com.zhang;
public class Main {
    public static void main(String[] args) {
        String str1 = new String("1024");
        String str2 = new String("1024");
        String product = multiply(str1,str2);
        System.out.println(product);
    }
    public static String multiply(String num1, String num2) {
        if (num1==null || num2==null) {
            return null;
        }

        int len1 = num1.length(), len2 = num2.length();
        int len3 = len1 + len2;
        int i, j, product, carry;

        int[] num3 = new int[len3];
        for (i=len1-1; i>=0; i--) {
            carry = 0;
            for (j=len2-1; j>=0; j--) {
                product = carry + num3[i+j+1] +
                        (num1.charAt(i)-'0') * (num2.charAt(j)-'0');
                num3[i+j+1] = product % 10;
                carry = product / 10;
            }
            num3[i+j+1] = carry;//记录每轮最后的单独进位
        }

        StringBuilder sb = new StringBuilder();
        i = 0;

        while (i

你可能感兴趣的:(lint0656. Multiply Strings)