LeetCode: 43. Multiply Strings

来源:互联网 发布:华师网络自助缴费 编辑:程序博客网 时间:2024/05/21 09:20

LeetCode: 43. Multiply Strings

题目描述

Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2.

Note:

The length of both num1 and num2 is < 110.
Both num1 and num2 contains only digits 0-9.
Both num1 and num2 does not contain any leading zero.
You must not use any built-in BigInteger library or convert the inputs to integer directly.

大意就是让写一个大数乘法的函数。

解题思路

模拟乘法计算的过程。为了方便起见,将字符串翻转。

Multiply Strings

AC 代码

class Solution {public:    string multiply(string num1, string num2) {        string ans;        if(num1 == "0" || num2 == "0") return "0";        reverse(num1.begin(), num1.end());        reverse(num2.begin(), num2.end());        int carryNum = 0;        for(int i = 0; i < num1.size(); ++i)        {            for(int j = 0; j < num2.size(); ++j)            {               if(i+j >= ans.size()) ans.resize(i+j+1, 0);               ans[i+j] += (num1[i]-'0')*(num2[j]-'0') + carryNum;               carryNum = ans[i+j]/10;               ans[i+j] %= 10;            }            for(int j = num2.size(); carryNum != 0; ++j)            {               if(i+j >= ans.size()) ans.resize(i+j+1, 0);               ans[i+j] += carryNum;               carryNum = ans[i+j]/10;               ans[i+j] %= 10;            }        }        for(int i = 0; i < ans.size(); ++i)        {            ans[i] += '0';        }        reverse(ans.begin(), ans.end());        return ans;    }};
1 0