• 大整数相乘


     思路:先每位相乘,之后统一%10进位

    例子:123*456

    4   5   6

         8   10   12

               12  15  18

    ---------------------------------

    4 (13) (28) (27)(18)

    统一进位:

    5  6     0     8       8

    最终结果:56088

    class Solution {
        public String multiply(String num1, String num2) {
            int num1Len = num1.length(),num2Len = num2.length();
            int[] res = new int[num1Len+num2Len];//辅助空间
            int resSize = num2Len+num1Len-2;
            for(int i=0;i<num1Len;i++){
                for(int j=0;j<num2Len;j++){
                    //这里i+j相等就是在竖式一列
                    res[i+j] += (num1.charAt(i) - '0')*(num2.charAt(j) - '0');
                }
            }
            for(int i=resSize;i>=1;i--){//进位
                 int tmp = res[i];
                 res[i] = res[i] % 10;
                 res[i-1] += tmp / 10;
            }
            if(res[0] == 0) return "0";//判断乘的结果是否是0
            StringBuilder ans = new StringBuilder("");
            for(int i=0;i<=resSize;i++){
                ans.append(res[i]);
            }
            return ans.toString();
        }
    }    

    不一样的烟火
  • 相关阅读:
    绪论
    Linux回到上次目录
    松下伺服电机控制器参数设置
    更新github上的文件
    pytorch
    从本地上传文件到github
    Linux常用命令
    使用colab训练神经网络
    深度学习模型训练过程
    anaconda安装ubuntu20.4中
  • 原文地址:https://www.cnblogs.com/cstdio1/p/10884174.html
Copyright © 2020-2023  润新知