static int x=[](){
std::ios::sync_with_stdio(false);
cin.tie(NULL);
return 0;
}();
class Solution {
public:
string multiply(string num1, string num2) {
int n = num1.length();
int m = num2.length();
int i, j, k;
int* result = new int[n + m];
memset(result, 0, sizeof(int) * (n + m));
// nums2 * nums1每一位
for (i = 0; i < m; i++){
int carry = 0;
for (j = 0; j < n; j++){
result[i + j] = result[i + j] + (num1[n - 1 - j] - 48) * (num2[m - 1 - i] - 48) + carry;
carry = result[i + j] / 10;
result[i + j] %= 10;
}
k = i + j;
//处理进位
while(carry != 0){
result[k] += carry;
carry = result[k] / 10;
result[k] %= 10;
k++;
}
}
i = m + n - 1;
while(i > 0 && result[i] == 0)
i--;
string tmp;
while(i >= 0)
tmp.push_back(result[i--] + 48);
return tmp;
}
};
LetCode 43. 字符串相乘
猜你喜欢
转载自blog.csdn.net/wbb1997/article/details/80960233
今日推荐
周排行