LeetCode---Multiply Strings
来源:互联网 发布:mysql 存储过程 丢失 编辑:程序博客网 时间:2024/04/28 00:17
题目大意:给出两个字符串表示的数求出其乘法结果。
算法思想:
1.设置两个变量分别存储当前结果和累加结果。
2.利用两个循环,外层循环控制被乘数内层循环控制乘数,然后将被乘数的每一位分别和乘数的所有位相乘得到当前结果并将其扩大10倍和累加结果相加并存入累加结果中。
3.返回计算结果。
代码如下:
class Solution {public: string multiply(string num1, string num2) { string preres,curres; if(num1.length()==0||num2.length()==0) return preres; int c=0; for(int i=num2.length()-1;i>=0;--i){ for(int j=num1.length()-1;j>=0;--j){ int tmp=(num1[j]-'0')*(num2[i]-'0')+c; curres+=(tmp%10+'0'); c=tmp/10; } if(c) { curres+=c+'0'; c=0; } if(preres.length()==0) preres=curres; else{ string a=preres,b=curres; reverse(a.begin(),a.end()); reverse(b.begin(),b.end()); preres=add(a,b); } curres.clear(); curres.append(num2.length()-i,'0'); } reverse(preres.begin(),preres.end()); if(count(preres.begin(),preres.end(),'0')==preres.length()) return "0"; return preres; } string add(string a, string b) { if(a.length()==0) return b; if(b.length()==0) return a; string res(""); reverse(a.begin(),a.end()); reverse(b.begin(),b.end()); int d=0,tmp=0,i; int size=min(a.size(),b.size()); for(i=0;i<size;++i){ tmp=(a[i]-'0')+(b[i]-'0')+d; res+=(tmp%10+'0'); d=tmp/10; } if(i<a.size()){ while(i<a.size()){ tmp=(a[i]-'0')+d; res+=(tmp%10+'0'); d=tmp/10; ++i; } } if(i<b.size()){ while(i<b.size()){ tmp=(b[i]-'0')+d; res+=(tmp%10+'0'); d=tmp/10; ++i; } } if(d){ res+=(d+'0'); } return res; } };
0 0
- LeetCode: Multiply Strings
- LeetCode Multiply Strings
- LeetCode: Multiply Strings
- [Leetcode] Multiply Strings
- [LeetCode] Multiply Strings
- [Leetcode] Multiply Strings
- LeetCode 45: Multiply Strings
- [LeetCode]Multiply Strings
- [LeetCode] Multiply Strings
- LeetCode-Multiply Strings
- [leetcode] Multiply Strings
- LeetCode - Multiply Strings
- Leetcode: Multiply Strings
- LeetCode题解:Multiply Strings
- leetcode Multiply Strings
- LeetCode Multiply Strings
- LeetCode | Multiply Strings
- [LeetCode] Multiply Strings
- 一起talk C栗子吧(第六十五回:C语言实例--DIY字符串连接函数)
- 160 You want to use the automatic management of backup and recovery operations features for your dat
- 4412裸机程序之lcd
- nyoj 37 回文字符串 【lcs&&dp】
- LPC54100 LPC54101 LPC54102 LPC541xx系列串口用法
- LeetCode---Multiply Strings
- mysql-5.6.17源码调试
- 杭电-1304A Contesting Decision(结构体)
- 课题相关的资料汇总
- bzoj 3196 Tyvj 1730 二逼平衡树
- List简单升序,降序排列 linq
- 161 Examine the following command used to perform incremental level 0 backup: RMAN> BACKUP INCREMENT
- CentOS 6.5 安装使用iSCSI-Target
- nyoj 44 子串和 【简单dp】