题解 | 大数加法

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'来实现

全部评论

相关推荐

08-28 20:36
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务