1 Star 0 Fork 0

MetaverseMobile/leetcode

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
43_字符串相乘.cpp 1.55 KB
一键复制 编辑 原始数据 按行查看 历史
TieNan2019 提交于 2021-02-16 14:48 . Create 43_字符串相乘.cpp
class Solution {
public:
string add(const string &num1, const string &num2) {
int maxLen = max(num1.size(), num2.size()) + 1;
string a = string(maxLen - num1.size(), '0') + num1;
string b = string(maxLen - num2.size(), '0') + num2;
int upper = 0;
for (int i = a.size() - 1; i > 0; i--) {
int x = a[i] - '0';
int y = b[i] - '0';
int res = x + y + upper;
upper = res / 10 > 0;
a[i] = res % 10 + '0';
}
if (upper)
a.front() = '1';
else
a = a.substr(1);
return a;
}
string multi(const string &num1, char num2, int zeros) {
string m = "0";
int k = num2 - '0';
for (int i = 0; i < num1.size(); i++) {
int f = num1[num1.size() - 1 - i] - '0';
m = add(m, to_string(f * k) + string(i, '0'));
}
return m + string(zeros, '0');
}
string multiply(string num1, string num2) {
if (num1 == "0" || num2 == "0")
return "0";
string ans;
for (int i = 0; i < num2.size(); i++) {
ans = add(ans, multi(num1, num2[num2.size() - 1 - i], i));
}
return ans;
}
};
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/MetaverseMobile/leetcode.git
[email protected]:MetaverseMobile/leetcode.git
MetaverseMobile
leetcode
leetcode
main

搜索帮助