每次看到模拟题目就想睡觉
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param s string字符串 第一个整数
* @param t string字符串 第二个整数
* @return string字符串
*/
string solve(string s, string t) {
if (s == "0" || t == "0") {
return "0";
}
// 最高位有进位则长度等于两者之和,不然长度减一,这里存放中间结果,不需要考虑最高位进位
std::vector<int> tmp(s.size() + t.size() - 1, 0);
for (int i = s.size() - 1; i >= 0; --i) {
for (int j = t.size() - 1; j >= 0; --j) {
// 对应位相乘结果的累加和
tmp[i + j] += (s[i] - '0') * (t[j] - '0');
}
}
int carry = 0;
std::string res;
for (int i = tmp.size() - 1; i >= 0; --i) {
int num = tmp[i] + carry;
res.push_back('0' + (num % 10));
carry = num / 10;
}
if (carry) {
res.push_back('0' + carry);
}
std::reverse(res.begin(), res.end());
return res;
}
};