class Solution {
public:
string stringMultiply_Char(string s, char c) {
if (c == '0') {
string res = "0";
return res;
}
string res = "";
int cur_res, p = 0, num_c = c - '0', new_digit;
for (int i = s.size() - 1; i >= 0; i--) {
int cur = s[i] - '0';
cur_res = cur * num_c + p;
p = cur_res / 10;
new_digit = cur_res % 10;
char new_char = '0' + new_digit;
res=new_char+res;
}
if (p) {
char head = p + '0';
res = head + res;
}
return res;
}
string stringPlus(string a, string b) {
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
string res = "";
int idx_a = 0, idx_b = 0,p=0,cur_a,cur_b,cur,new_digit;
char new_char;
while (idx_a < a.size() && idx_b < b.size()) {
cur_a = a[idx_a++] - '0';
cur_b = b[idx_b++] - '0';
cur = cur_a + cur_b + p;
p = cur / 10;
new_digit = cur % 10;
new_char = '0' + new_digit;
res = new_char+res;
}
while (idx_a < a.size()) {
cur_a= a[idx_a++] - '0';
cur = cur_a + p;
p = cur / 10;
new_digit = cur % 10;
new_char = '0' + new_digit;
res = new_char+res;
}
while (idx_b < b.size()) {
cur_b = b[idx_b++] - '0';
cur = cur_b + p;
p = cur / 10;
new_digit = cur % 10;
new_char = '0' + new_digit;
res = new_char+res;
}
if (p) {
res = '1'+res;
}
return res;
}
string multiply(string num1, string num2) {
if(num1=="0"||num2=="0")return "0";
int cnt = 0;
vector<string>sub_string;
string cur,res="";
for (int i = num2.size() - 1; i >= 0; i--,cnt++) {
cur = stringMultiply_Char(num1, num2[i]);
for (int j = 0; j < cnt; j++)cur += '0';
sub_string.push_back(cur);
}
for (int i = 0; i < sub_string.size(); i++) {
res = stringPlus(res, sub_string[i]);
}
return res;
}
};
被百分之九十的大佬击败