题解 | #大数加法#

大数加法

https://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475

1.解题思路:第一步:接收的两个string要想进行加法运算,必须先将其转为int类型。第二步:转为int类型后,s和t从个位开始两两相加,具体原理幼儿园学过,如下图。定义一个StringBuffer,将余位存入StringBuffer中,进位暂存用于下一次运算。如此循环。第三步:最终得出StringBuffer,将最终的进位补上,但是此时的StringBuffer是倒序的,使用函数reverse变为正常的数字顺序,return即可。 alt

2.代码实现:



public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    public String solve (String s, String t) {
    	//存放相加的结果
        StringBuffer stringBuffer = new StringBuffer();
        int slength = s.length() - 1;
        int tlength = t.length() - 1;
        //如果其中一个没有值,则和为另外一个值
        if (slength == -1)
            return t;
        if (tlength == -1)
            return s;
        //进位和余位
        int jinWei = 0;
        int yvWei = 0;
        //开始循环,循环结束条件为s,t都循环完,防止出现如:s比t长,t循环完了,s还没循环完。
        while (slength >= 0 || tlength >= 0) {
        //将s分割,(s.charAt(slength) - '0')将string转为整型。
            int snum = slength >= 0 ? (s.charAt(slength) - '0') : 0;
            int tnum = tlength >= 0 ? (t.charAt(tlength) - '0') : 0;        
            //将分割的数字进行运算,余位取余,进位取整。
            //需要先算余位,先前犯过这个错,先算进位将进位的上一次循环的值更新掉了,导致后算余位时出错
            yvWei = (snum + tnum + jinWei) % 10;
            jinWei = (snum + tnum + jinWei) / 10;
            //运算结果放入stringBuffer
            stringBuffer.append(yvWei);
            slength --;
            tlength --;
        }
        //循环运算结束,将进位补上
        if(jinWei != 0)
        stringBuffer.append(jinWei);
        //stringBuffer是反的,使用reverse函数反转
        //如99+99,上面循环结束后stringBuffer内容为891,反转即为198
        stringBuffer.reverse();
        return stringBuffer.toString();
    }

}
#大数加法#
全部评论

相关推荐

02-01 12:05
复旦大学 Java
腾讯的提前批大概率应该是没有笔试的,但是这个时候有相当部分的同学简历估计都没有准备好,没准备好的同学也不用急,大部分都是3月之后开,这个时候开的绝大多数都是神仙打架,问的东西也比较难,打算投递的同学也多看下计算机网络和操作系统,腾讯对这部分的知识问的比较多。另外多刷下牛客的热门题库,刷题注意刷ACM模式,和牛客的周赛题,腾讯有的部门会从这里面出原题。我是@程序员花海关注我,带你了解更多校招资讯!
程序员花海:还没有来得及准备的同学可以看下学习路线:https://www.nowcoder.com/discuss/824693499982315520?sourceSSR=users算法题:https://www.nowcoder.com/feed/main/detail/20e7a999fa04485b88340a274411ca0d?sourceSSR=users八股文:https://www.nowcoder.com/discuss/833102362771251200?sourceSSR=users简历书写方式:https://www.nowcoder.com/discuss/839907820706205696?sourceSSR=users都是以前在牛客发的文章~
软开人,秋招你打算投哪些...
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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