LeetCode:Multiply Strings
2016-05-30 11:49
387 查看
Multiply Strings
Total Accepted: 62981 TotalSubmissions: 265241 Difficulty: Medium
Given two numbers represented as strings, return multiplication of the numbers as a string.
Note:
The numbers can be arbitrarily large and are non-negative.
Converting the input string to integer is NOT allowed.
You should NOT use internal library such as BigInteger.
Subscribe to see which companies asked this question
Hide Tags
Math String
Hide Similar Problems
(M) Add Two Numbers (E)
Plus One (E) Add Binary
思路:
如:num1="123",num2="45";对应结果存储在ans[num1.size()+num2.size()]中。
从右到左对位相乘,只要确定相乘后的结果在ans中位置即可。
参考讨论区的图:
即:num1[i] * num2[j]相乘后的对应位置为:i+j和i+j+1。
c++ code:
class Solution { public: string multiply(string num1, string num2) { int len1 = num1.size(),len2 = num2.size(); string ans(len1+len2,'0'); for(int i=len1-1;i>=0;i--) { for(int j=len2-1;j>=0;j--) { int mul = (num1[i]-'0') * (num2[j]-'0'); int p1 = i + j; int p2 = p1 + 1; int sum = mul + ans[p2]-'0'; ans[p2] = sum % 10 + '0'; ans[p1] += sum / 10; // 这里ans[p1]-'0',而sum/10+'0',因此抵消 } } // 去掉前面的0 int start = 0; while(ans[start]=='0') start++; ans = ans.substr(start); return ans.size()==0 ? "0" : ans; } };
相关文章推荐
- MYSQL学习笔记3--mysql 2PC二阶段协义 与 日志闪回
- Eclipse 中 program arguments 与 VM arguments 的区别
- 网站前端性能优化
- 从电脑上向手机系统文件里面push文件操作流程:
- iOS 公开项目
- spring工作原理
- Log,Toast,SPUtil,Density,SDCard,ScreenUtil,AppVersion,KeyBoard,NetWork,HttpUtil工具类
- 洗耳翁
- 36. 对象编号获取
- git diff ^M的消除
- Jenkins部署新项目
- [hihoCoder] #1305 : 区间求差 解题报告
- iOS 多线程篇4—线程间的通信
- Sip协议结合Wireshark研究
- 关于Matlab编译生成jar包时出现错误的解决办法
- 如何使用Camera照相机API来选择前后相机来拍照
- Java利用反射实现对象转json
- 判断设备是否安装了app
- Android 文件转换大小
- store.js - 实现本地存储(LocalStorage)