字符串相乘

孤街醉人 提交于 2019-12-08 06:30:13

问题描述

定给两个以字符串形式表示的非负整数  num1 状语从句:  num2,报道查看  num1 状语从句:  num2 的乘积,它们的乘积也表示为字符串形式。

示例1:

输入: num1 = "2", num2 = "3"
输出: "6"

示例2:

输入: num1 = "123", num2 = "456"
输出: "56088"

说明:

  1. num1 状语从句:  num2 的长度小于110。
  2. num1 状语从句:  num2 只所有游戏数字  0-9
  3. num1 和  num2 均不以零开头,除非是数字0本身。

代码实现

string BigNumMultiply(string str1,string str2) {
    if (str1 == "0" || str2 == "0")
        return "0";
    int size1 = str1.size(), size2 = str2.size();
    string str(size1 + size2,'0');
    for (int i = size2 - 1; i >= 0; --i) {
        int mulflag = 0, addflag = 0;
        for(int j = size1 - 1; j >= 0; --j) {
            int temp1 = (str2[i] - '0') * (str1[j] - '0') + mulflag;
            mulflag = temp1 / 10;
            temp1 = temp1 % 10;
            int temp2 = str[i + j + 1] - '0' + temp1 + addflag;
            str[i + j + 1] = temp2 % 10 + '0';
            addflag = temp2 / 10;
        }
        str[i] += mulflag + addflag;
    }
    if (str[0] == '0')
        str = str.substr(1, str.size());
    return str;
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!