欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

字符串乘法问题总结

程序员文章站 2022-05-06 08:50:06
...

公式模版

for(num1){
	for(num2){
		res[i + j + 1] = sum % 10;
		res[i + j] = res[i + j] + sum / 10;
	}
}

问题分析

  • 数组承载计算结果
  • 计算结果落在数组中i+j和i+j+1的位置
   public String multiply(String num1, String num2) {

        if (num1.equals("0") || num2.equals("0")) {
            return "0";
        }
        int length1 = num1.length();
        int length2 = num2.length();
        int[] res = new int[length1 + length2];

        for (int i = length1 - 1; i >= 0; i--) {

            for (int j = length2 - 1; j >= 0; j--) {

                int n1 = num1.charAt(i) - '0';
                int n2 = num2.charAt(j) - '0';

                int sum = n1 * n2 + res[i + j + 1];

                res[i + j + 1] = sum % 10;
                res[i + j] = res[i + j] + sum / 10;

            }

        }

        StringBuilder stringBuilder = new StringBuilder();

        for (int i = 0; i < res.length; i++) {
            if (i == 0 && res[0] == 0) {
                continue;
            }
            stringBuilder.append(res[i]);
        }
        return stringBuilder.toString();

    }