模拟手乘加法实现
代码:
public String multiply(String num1, String num2) {
int len1 = num1.length(), len2 = num2.length();
if (len1 <= 0 && len2 <= 0)
return "";
String res = "";
String tempRes = "";
int temp = 0, jinwei = 0;
for (int i = len1 - 1; i >= 0; i--) {
if (num1.charAt(i) == '0')
continue;
for (int j = len2 - 1; j >= 0; j--) {//
temp = (num1.charAt(i) - 48) * (num2.charAt(j) - 48) + jinwei;
if (temp > 9) {
jinwei = temp / 10;
tempRes = temp % 10 + tempRes;
} else {
tempRes = temp + tempRes;
jinwei = 0;
}
}
if (jinwei != 0)
tempRes = jinwei + tempRes;
// 添加0
if (!tempRes.equals("0")) {
for (int j = i + 1; j < len1; j++) {
tempRes = tempRes + "0";
}
res = addition(res, tempRes);
}
tempRes = "";
jinwei = 0;
}
if (res.isEmpty())
return "0";
return res;
}
// 加法
public String addition(String num1, String num2) {
int len1 = num1.length(), len2 = num2.length();
if (len1 <= 0 && len2 <= 0) {
return "";
}
String res = "";
int maxLen = len1 > len2 ? len1 : len2;
int temp = 0, jinwei = 0;
int index2 = len2 - 1;
for (int i = len1 - 1; i >= 0; i--) {
if (index2 >= 0) {
temp = num1.charAt(i) + num2.charAt(index2--) - 96 + jinwei;
// 处理进位
if (temp > 9) {
jinwei = 1;
res = temp % 10 + res;
} else {
res = temp + res;
jinwei = 0;
}
} else {
temp = num1.charAt(i) - 48 + jinwei;
if (temp > 9) {
jinwei = 1;
res = temp % 10 + res;
} else {
res = temp + res;
jinwei = 0;
}
}
}
if (index2 >= 0) {
for (int i = index2; i >= 0; i--) {
temp = num2.charAt(i) - 48 + jinwei;
if (temp > 9) {
jinwei = 1;
res = temp % 10 + res;
} else {
res = temp + res;
jinwei = 0;
}
}
}
if (jinwei!=0)
res = jinwei+res ;
return res;
}