题解 | #大数加法#

大数加法

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

与2个链表相加的题是一个思路
时间复杂度:O(n+m),n,m为两个字符串的长度,因为需要遍历两个字符串,所以时间复杂度为O(n+m);
空间复杂度:O(n),n为两个字符串中长的那个字符串的长度,需要使用额外的n空间来保存计算结果。

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    public String solve (String s, String t) {

        Stack<Integer> stack = new Stack<>();

        StringBuilder sb = new StringBuilder();

        int sLenIndex = s.length() - 1;

        int tLenIndex = t.length() - 1;

        int jinwei = 0;

        while (sLenIndex >= 0 || tLenIndex >= 0 || jinwei != 0) {

            if (sLenIndex >= 0) {
                char a = s.charAt(sLenIndex);
                String a1 = String.valueOf(a);
                int a2 = Integer.parseInt(a1);
                jinwei += a2;
                sLenIndex--;
            }

            if (tLenIndex >= 0) {
                char b = t.charAt(tLenIndex);
                String b1 = String.valueOf(b);
                int b2 = Integer.parseInt(b1);
                jinwei += b2;
                tLenIndex --;
            }

            stack.push(jinwei % 10);
            jinwei = jinwei / 10;
        }

        while (!stack.isEmpty()) {
            sb.append(stack.pop());
        }

        return sb.toString();
    }
}
刷刷题 文章被收录于专栏

刷刷题 活跃活跃脑细胞

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 10:39
点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
06-12 16:23
已编辑
小米_软件开发(准入职员工)
点赞 评论 收藏
分享
但听说转正率很低,我现在有在实习了,好纠结要不要去
熬夜脱发码农:转正率低归低,但是实习的经历你可以拿着,又不是说秋招不准备了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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