package practice;
public class BigNumberSum {
public static void main(String[] args) {
System.out.println(bigNumberSum("426709752318", "95481253129"));
}
public static String bigNumberSum (String bigNumberA, String bigNumberB) {
//1、把两个大整数用数组逆序存储
char[] charsA = new StringBuffer(bigNumberA).reverse().toString().toCharArray();
char[] charsB = new StringBuffer(bigNumberB).reverse().toString().toCharArray();
//2、构建result数组,数组长度等于较大整数位数 +1
int maxLength = charsA.length > charsB.length ? charsA.length : charsB.length;
int[] result = new int[maxLength + 1];
//3、遍历数组,按位相加
for (int i = 0; i < result.length; i++) {
int temp = result[i];
if (i < charsA.length) {
temp += charsA[i] - '0';
}
if (i < charsB.length) {
temp += charsB[i] - '0';
}
//判断是否进位
if (temp > 10) {
temp = temp - 10;
result[i + 1] = 1;
}
result[i] = temp;
}
//4、把result数组再次逆序并转成String
StringBuffer sb = new StringBuffer();
boolean flag = true;
for (int i = result.length - 1; i >= 0; i--) {
if (result[i] == 0 && flag) {
continue;
}
flag = false;
sb.append(result[i]);
}
return sb.toString();
}
}