刷题第13天(LeetCode|刷题第13天(LeetCode #43.字符串相乘)

刷题第13天(LeetCode|刷题第13天(LeetCode #43.字符串相乘)
文章图片

思路分析:
【刷题第13天(LeetCode|刷题第13天(LeetCode #43.字符串相乘)】由于题目要求,不得使用直接将输入转换为整数进行计算,我们可以利用模拟乘法的竖式计算来完成字符串的相乘。
借用LeetCode上的动图模拟:
刷题第13天(LeetCode|刷题第13天(LeetCode #43.字符串相乘)
文章图片

代码实现:

class Solution {public: string multiply(string num1, string num2) {int n1=num1.size(); int n2=num2.size(); string res(n1+n2,'0'); if(num1=="0"||num2=="0") return "0"; for(int i=n2-1; i>=0; i--) {for(int j=n1-1; j>=0; j--) {int ans=(num1[j]-'0')*(num2[i]-'0')+(res[i+j+1]-'0'); res[i+j+1]=ans%10+'0'; res[i+j]+=ans/10; } } if(res[0]=='0') res=res.erase(0,1); return res; } };

运行结果(c++):
刷题第13天(LeetCode|刷题第13天(LeetCode #43.字符串相乘)
文章图片

    推荐阅读