两个大数之和

借助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();
    }
}