LeetCode OJ - Multiply Strings
来源:互联网 发布:有福气的八字 知乎 编辑:程序博客网 时间:2024/06/09 20:38
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.
分析:大数乘法运算,巧妙的使用数组来模拟计算。若两个数长度为l1, l2那么结果长度最大为l1 + l2。
class Solution {public: string multiply(string num1, string num2) { if(num1=="0" || num2=="0") return "0"; int l1 = num1.length(), l2 = num2.length(); int* res = new int[l1+l2]; memset(res,0,sizeof(int)*(l1+l2)); for(int i=0; i<l1; ++i) for (int j=0; j<l2; ++j) res[i+j+1] += (num1[i] - '0') * (num2[j] - '0'); string ss = ""; for (int k=l1+l2-1; k>=0; --k){ if(k>0) res[k-1] += res[k]/10; res[k] %= 10; ss = char(res[k]+'0')+ss; } ss = ss[0]=='0'? ss.substr(1):ss; return ss; }};
当然迭代计算时,也可以用进位标记为来辅助计算。
string ss = ""; int flag = 0; for (int k=l1+l2-1; k>=0; --k){ //进位计算 int tmp = (res[k] + flag) / 10; //结果计算 res[k] = (res[k] + flag) % 10; flag = tmp; ss = char(res[k]+'0')+ss;
0 0
- LeetCode OJ:Multiply Strings
- LeetCode OJ - Multiply Strings
- LeetCode OJ Multiply Strings
- <LeetCode OJ> 43. Multiply Strings
- LeetCode OJ-43-Multiply Strings
- LeetCode OJ算法题(四十二):Multiply Strings
- LeetCode OJ 之 Multiply Strings(字符串乘积)
- 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
- linux yum命令详解
- [c++] 判断类下是否有某个指定类型及名称的字段
- Win32 Windows编程 十
- NIVC->IPR[IPADDR]
- 怎么将excel转换pdf在线
- LeetCode OJ - Multiply Strings
- Wireshark基本介绍和学习TCP三次握手
- AndroidStudio关联自己下载的android source方法
- C++的函数重载
- 客户端ccb变量命名规范:
- 数据库SQL优化大总结之 百万级数据库优化方案
- Java8 Lambda表达式
- Javascript 面向对象编程(一):封装
- ios基础之C语言 1