43. Multiply Strings 大数
来源:互联网 发布:美好的诗句 知乎 编辑:程序博客网 时间:2024/05/17 06:31
题目地址
把较大的数作为被乘数,与乘数的每一位相乘,然后加到最后的结果上。
使用数组存储最后的结果,注意相乘后的位数。
class Solution {public: string multiply(string num1, string num2) { string ans; const int maxn = num1.size() + num2.size() + 5; int a[maxn] = {0}; reverse(num1.begin(), num1.end()); reverse(num2.begin(), num2.end()); if (num2.size() > num1.size()) num1.swap(num2); for (int i = 0; i < num2.size(); ++i) { add(maxn, a, num1, num2, i); } int index = maxn - 1; while (index >= 0 && a[index] == 0) index--; for (int i = index; i >= 0; --i) { ans += a[i] + '0'; } if (ans.size() == 0) ans += '0'; return ans; } void add(const int maxn, int a[], const string &num1, const string &num2, int n) { int carry = 0, n1 = num2[n] - '0'; int b[num1.size() + 5] = {0}; for (int i = 0; i < num1.size(); ++i) { int n2 = num1[i] - '0'; int now = (n1 * n2 + carry) % 10; carry = (n1 * n2 + carry) / 10; b[i] = now; } if (carry) b[num1.size()] = carry; carry = 0; for (int i = 0; i + n < maxn; ++i) { if (i < num1.size() + 1) { int now = (a[i + n] + b[i] + carry) % 10; carry = (a[i + n] + b[i] + carry) / 10; a[i + n] = now; } else { int now = (a[i + n] + carry) % 10; carry = (a[i] + carry) / 10; a[i + n] = now; } } }};
0 0
- 43. Multiply Strings 大数
- 43.Multiply Strings 大数相乘
- 43. Multiply Strings(大数相乘)
- 【LeetCode】43. Multiply Strings 大数相乘算法
- 43. Multiply Strings(string模拟大数乘法)
- 43. Multiply Strings 大数相乘 leetcode
- [leetcode] 43. Multiply Strings(大数相乘)
- 【大数乘法】Multiply Strings
- Multiply Strings 大数相乘
- 大数乘法(Multiply Strings)
- Multiply Strings 大数乘法
- 大数的乘法 Multiply Strings
- LeetCode Multiply Strings 大数相乘
- Multiply Strings(大数相乘)
- leetcode 43. Multiply Strings 9大数相差(java实现)
- 【大数模板+十进制+for_loop】Multiply Strings
- LeetCode-Multiply Strings实现大数的乘法
- [leetcode] 43 Multiply Strings(模拟大数乘法)
- 常用 Git 命令清单
- JDBC的事务。
- 链式队列
- 文章标题
- uva 539 The Settlers of Catan
- 43. Multiply Strings 大数
- 11多米诺骨牌(1)
- MONSTER童话系列——沒有名字的怪物
- java趣味编程100例第一章1-1打印金字塔图案
- 排序算法之冒泡排序法(C++实现)
- C#中的throw
- servlet upload
- 66. Plus One
- 2012蓝桥杯预赛试题本科c++奇怪的比赛