高精度相加

还是花了不少时间来写

    public String twoSum(String s1, String s2){
        int max = Math.max(s1.length(), s2.length());
        int[] ret = new int[max+1];

        int plus = 0;
        for (int i=0; i<=max; i++) {
            int up = i > s1.length() - 1 ? 0 : s1.charAt(s1.length() - i - 1) - '0';
            int down = i > s2.length() - 1 ? 0 : s2.charAt(s2.length() - i - 1) - '0';
            if (i > s1.length()-1 && i > s2.length() - 1) {
                // 处理最后一位
                if (plus == 1) {
                    ret[i] = 1;
                }
                break;
            }
            int sum = up + down + plus;
            plus = sum >= 10 ? 1 : 0;
            ret[i] = sum % 10;
        }

        StringBuilder s = new StringBuilder();
        for (int i=max; i>=0; i--) {
            if (i==max && ret[i] == 0){
                continue;
            }
            s.append(ret[i]);
        }

        return s.toString();
    }

    public static void main(String[] args) {
        RpcHttpUtil rpcHttpUtil = new RpcHttpUtil();
        System.out.println(rpcHttpUtil.twoSum(String.valueOf(Integer.MAX_VALUE), "456"));
    }