问题:
两个大数相加。
1、是整数;
2、两个数无限大,long都装不下;
3、不能用BigInteger;
4、不能用任何包装类提供的运算方法;
5、两个数都是以字符串的方式提供。
解题思路:
1. 使用StringBuilder从两个字符串末尾开始进行相加
2. ‘9’ - ‘0’ = 9
3. 使用StringBuilder字符串反转,获取结果
代码:
package com.ziling.goodlife.study;
/**
* @Author: yipeng
* @Date: 2021/6/22 20:45
*/
public class BigDataAdd {
public static String bigDataAdd(String a, String b) {
if (a == null || a.isEmpty()) return b;
if (b == null || b.isEmpty()) return a;
StringBuilder res = new StringBuilder("");
int i = a.length() - 1;
int j = b.length() - 1;
int carry = 0;
while (i >= 0 || j >= 0) {
int n1 = i >= 0 ? a.charAt(i) - '0' : 0;
int n2 = j >= 0 ? b.charAt(j) - '0' : 0;
int sum = n1 + n2 + carry;
carry = sum / 10;
res.append(sum % 10);
i--;
j--;
}
if (carry == 1) {
res.append(carry);
}
return res.reverse().toString();
}
public static void main(String[] args) {
String a = "523";
String b = "74523";
System.out.println(bigDataAdd(a, b));
}
}
结论:
验证可行