从个位数开始一位一位的加,记录进位(rem)。每一位的结果append到StringBuilder里。记得最后要把StringBuilder倒过来输出。

import java.util.*;

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    public String solve (String s, String t) {
      int sl=s.length() - 1, tl=t.length() - 1;
      
      StringBuilder sb = new StringBuilder();
      int rem = 0;
      while (sl >= 0 || tl >= 0) {
        // 如果其中一个数的每一位都加过了,就用0作为这个数当前位的值, e.g.:
        //  123   =>  123
        // + 23   => +023
        int ss = sl >= 0 ? s.charAt(sl) - '0' : 0;
        int tt = tl >= 0 ? t.charAt(tl) - '0' : 0;
        
        int sum = ss + tt + rem;
        rem = sum > 9 ? 1 : 0;
        sb.append(sum % 10);
        sl--; tl--;
      }
      
      if (rem > 0) {  // 最高位还有进位
        sb.append(rem);
      }
      
      return sb.reverse().toString();
    }
}