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

leetcode 43 字符串相乘 / MULTIPLY STRINGS

程序员文章站 2022-05-12 09:17:38
...

题目描述:

leetcode 43 字符串相乘 / MULTIPLY STRINGS

    大数相乘,解题思路有点像多项式相乘,传送门:点击打开链接  这篇博客写得比较清晰,具体代码如下:

class Solution {
	public:
		string multiply(string num1, string num2) {
			int n1 = num1.size(), n2 = num2.size();
			vector<int> tmp(n1+n2, 0);
			int p = n1 + n2 - 2; // 至少需处理 n1 + n2 - 1位
			for(int i = 0;i < n1;i++){
				for(int j = 0;j < n2;j++){
					tmp[p - i - j] += (num1[i] - '0') * (num2[j] - '0');
				}
			}
			int carry = 0;
			for(int i = 0 ; i < n1 + n2 ;i ++){
				tmp[i] += carry;
				carry = tmp[i] / 10;
				tmp[i] %= 10;
			}
			int i = p + 1;
			while(tmp[i] == 0) i--; // 把多余的0去掉
			if(i < 0) return "0";
			string res;
			for(;i >= 0 ;i--){
				res.push_back(tmp[i] + '0');
			}
			return res;
		}
	};
    眼拙的我把一个地方 i 写成了 j 改了一个多小时才看到问题出在哪,我是真的气。