两个超过long的数相加处理方法,BigInteger内部加法实现
Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2.
Note:
The length of both num1 and num2 is < 5100.
Both num1 and num2 contains only digits 0-9.
Both num1 and num2 does not contain any leading zero.
You must not use any built-in BigInteger library or convert the inputs to integer directly.
class Solution {
public String addStrings(String num1, String num2) {
if (num1.length() < num2.length()) {
String tmp = num1;
num1 = num2;
num2 = tmp;
}
int len1 = num1.length();
int len2 = num2.length();
int[] ans = new int[len1 + 1];
for (int i = 0; i <= len1; i++) {
ans[i] = 0;
}
int p = len2 - 1;
for (int i = len1; i > 0; i--) {
if (p >= 0) {
int sum = ans[i] + num1.charAt(i - 1) - '0' + num2.charAt(p) - '0';
ans[i] = sum % 10;
ans[i - 1] = sum / 10;
p--;
} else {
int sum = ans[i] + num1.charAt(i - 1) - '0';
ans[i] = sum % 10;
ans[i - 1] = sum / 10;
}
}
StringBuffer sb = new StringBuffer();
if (ans[0] != 0)
sb.append(String.valueOf(ans[0]));
for (int i = 1; i <= len1; i++) {
sb.append(String.valueOf(ans[i]));
}
return sb.toString();
}
}