题解 | 大数加法
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算两个数之和 * @param s string字符串 表示第一个整数 * @param t string字符串 表示第二个整数 * @return string字符串 */ public String solve (String s, String t) { StringBuilder res = new StringBuilder(); Stack<Integer> stack = new Stack<>(); int p1 = s.length()-1; int p2 = t.length()-1; int carry = 0; while(p1 >= 0 || p2 >= 0 || carry!=0){ carry += p1 >=0?s.charAt(p1--) - '0':0; //高位不够用0补位 carry += p2>=0?t.charAt(p2--) - '0':0; res.append(carry % 10); carry = carry/10; } return res.reverse().toString(); } }
1、从低位到高位依次计算,高位没有值,用0替代,从进位的数依次加上去,十位数为对10取模,个位数为对10取余
2、利于StringBuilder的特性依次记录每一个数值,最后进行翻转得倒正确的结果数
3、得倒字符对应的实际数值,使用当前字符减去字符'0'来实现