不多逼逼,代码。
class Solution {
public String multiply(String num1, String num2) {
if (num1.equals("0") || num2.equals("0")){
return "0";
}
String res = "";
for (int i = num2.length() - 1; i > -1; i--) {
String str = addOneAndMoreStrings(num1, num2.charAt(i));
for (int j = 0; j < num2.length() - 1 - i; j++) {
str = str + "0";
}
res = addTwoStrings(str, res);
}
return res;
}
public static String addOneAndMoreStrings(String num1, char num2) {
String res = "";
int num = num2 - '0';
int length = num1.length() - 1;
int flag = 0;
int help;
while (length != -1) {
help = (num1.charAt(length) - '0') * num + flag;
flag = help / 10;
help = help % 10;
res = help + res;
length--;
}
if (flag != 0) {
res = flag + res;
}
return res;
}
public static String addTwoStrings(String num1, String num2) {
int ll1 = num1.length() - 1;
int ll2 = num2.length() - 1;
String res = "";
int flag = 0;
int help;
while (ll1 != -1 && ll2 != -1) {
help = (num1.charAt(ll1) - '0') + (num2.charAt(ll2) - '0') + flag;
if (help >= 10) {
help -= 10;
flag = 1;
} else {
flag = 0;
}
res = help + res;
ll1--;
ll2--;
}
while (ll1 != -1) {
help = (num1.charAt(ll1) - '0') + flag;
if (help >= 10) {
help -= 10;
flag = 1;
} else {
flag = 0;
}
res = help + res;
ll1--;
}
while (ll2 != -1) {
help = (num2.charAt(ll2) - '0') + flag;
if (help >= 10) {
help -= 10;
flag = 1;
} else {
flag = 0;
}
res = help + res;
ll2--;
}
if (flag == 1) {
res = flag + res;
}
return res;
}
}