大数之和(Java)

大数加法

http://www.nowcoder.com/questionTerminal/11ae12e8c6fe48f883cad618c2e81475

两个大数之和

借助StringBuilder逐位处理

两个大数相加可以看做两个字符串从尾部开始逐位转int后求和,利用StringBuilder.insert(0, add)加上StringBuilder.toString()或者StringBuilder.append(add)加上StringBuilder.reverse().toString()。

public class Solution {
    public String solve (String s, String t){
        int i = s.length() - 1, j = t.length() - 1;
        int temp = 0;
        StringBuilder out = new Stringbuilder();
        while (i >= 0 || j >= 0 || temp != 0) {
            temp += i >= 0 ? s.charAt(i--) - '0' : 0;
            temp += j >= 0 ? t.charAt(j--) - '0' : 0;
            out.append(temp % 10);
            temp = temp / 10;
        }
        return out.reverse().toString();
    }
}

使用BigInteger,暴力解决

当然还有一种暴力的方法BigInteger,不建议在笔试上使用

public class Solution {
    public String solveByJava(String s, String t){
        BigInteger num1 = new BigInteger(s);
        BigInteger num2 = new BigInteger(t);
        return num1.add(num2).toString();
    }
}
全部评论
|| temp != 0是为了在最后一步的循环中,如果temp=1,即有进位1没有被append到out上去,则再进入一次循环,把1加上去
1 回复 分享
发布于 2022-01-16 16:57
面试的时候要是这么解的话,就会叫你回去等通知hhh
点赞 回复 分享
发布于 2022-04-12 19:20

相关推荐

2024-12-23 06:50
东北大学 Java
给点吧求求了:3点发的帖子,害怕😰
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
01-17 11:44
你在各大软件投了一份又一份,你打招呼的hr一个接一个,但是只要你投过的,很快就下线了,没关系你的能量是很强,你看过的岗位招到人的速度都增加了。朋友们一个个拿着丰厚的实习回报,你却默默在家刷新邮箱,等待着那寥寥无几的面试通知。你每天一睁眼就狂投简历,你一有面试邀约就点确认。过年亲戚们围坐聊天,谈论着他们孩子的职场成就,你试图插话说自己面试过的公司数量,但他们显然不太感兴趣。你在心里自嘲,觉得他们不懂面试的艰辛、不懂得每一次面试机会的珍贵,不懂得一张张精心准备的简历背后的努力。笑你那个小侄子只会在网上刷刷职位,而你已经是各大招聘网站的常客。亲戚们夸赞自己孩子一年的成就,儿子的新工作,女儿的晋升,而...
龚新化:这帖删了呗,这跟我朋友有点相似,不过我是无所谓的😀,没什么感觉,我不轻易破防的,但是我一个朋友可能有点汗流浃背了😕,他不太舒服想睡了,当然不是我哈,我一直都是行的,以一个旁观者的心态看吧,也不至于破防吧😃,就是想照顾下我朋友的感受,他有点破防了,还是建议删了吧😯,当然删不删随你,因为我是没感觉的,就是为朋友感到不平罢了🥺
点赞 评论 收藏
分享
评论
13
2
分享

创作者周榜

更多
牛客网
牛客企业服务