题解 | 高精度整数加法

高精度整数加法

https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String a = in.nextLine();
        String b = in.nextLine();
        int i = a.length() - 1;
        int j = b.length() - 1;
        Stack<Character> stack = new Stack<>();
        int flow = 0;
        while (i >= 0 && j >= 0) {
            // 从低位开始加(也就是字符串的逆序访问)
            int r = a.charAt(i) - '0' + (b.charAt(j) - '0') + flow;
            char cur = (char) ('0' + (r % 10));
            flow = r / 10;
            stack.push(cur);
            i--;
            j--;
        }
        while (i >= 0) {
            // a还有更高位的数组字符要加上
            int r = a.charAt(i) - '0' + flow;
            char cur = (char) ('0' + (r % 10));
            flow = r / 10;
            stack.push(cur);
            i--;
        }

        while (j >= 0) {
            // b还有更高位的数组字符要加上
            int r = (b.charAt(j) - '0') + flow;
            char cur = (char) ('0' + (r % 10));
            flow = r / 10;
            stack.push(cur);
            j--;
        }
        if (flow > 0) {
            // 别漏掉这个进位,最后的尾巴
            stack.push('1');
        }

        StringBuffer sb = new StringBuffer();
        while (!stack.isEmpty()) {
            sb.append(stack.pop());
        }
        System.out.println(sb);
    }
}
  1. 这是一道非常基础的题目,这种底层加法的实现,在数字电路知识中也是很基础的操作。
  2. 顺序代码,不嵌套,虽然冗长写,但整体很简洁。
#Vibe Coding 会干掉初级岗位吗?#
常规算法题目专栏 文章被收录于专栏

这里记录一些常规的算法题目题解,主要包括中等难度,还有一些有意思的题目~

全部评论
求面经
点赞 回复 分享
发布于 04-02 23:21 上海

相关推荐

评论
2
收藏
分享

创作者周榜

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