从个位数开始一位一位的加,记录进位(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();
}
}