两个大数之和
借助StringBuilder逐位处理
两个大数相加可以看做两个字符串从尾部开始逐位转int后求和,利用StringBuilder.insert(0, add)加上StringBuilder.toString()或者StringBuilder.append(add)加上StringBuilder.reverse().toString()。
public class Solution { public String solve (String s, String t){ int i = s.length() - 1, j = t.length() - 1; int temp = 0; StringBuilder out = new Stringbuilder(); while (i >= 0 || j >= 0 || temp != 0) { temp += i >= 0 ? s.charAt(i--) - '0' : 0; temp += j >= 0 ? t.charAt(j--) - '0' : 0; out.append(temp % 10); temp = temp / 10; } return out.reverse().toString(); } }
使用BigInteger,暴力解决
当然还有一种暴力的方法BigInteger,不建议在笔试上使用
public class Solution { public String solveByJava(String s, String t){ BigInteger num1 = new BigInteger(s); BigInteger num2 = new BigInteger(t); return num1.add(num2).toString(); } }