题解 | #高精度整数加法#

高精度整数加法

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

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String a = in.nextLine();
            String b = in.nextLine();
            porcess(a, b);
        }
    }

    private static void porcess(String a, String b) {
        int al = a.length()-1;
        int bl = b.length()-1;
        int bit = 0;//进位
        StringBuffer buffer = new StringBuffer();

        //从字符串末尾递减 各索引位置的值相加
        while(al >= 0 || bl >= 0) {
            int res;
            if(al >= 0 ^ bl >= 0) {
                if(al >= 0) {
                    int x = a.charAt(al) - '0';
                    res = x + bit;
                    al--;
                }else {
                    int y = b.charAt(bl) - '0';
                    res = y + bit;
                    bl--;
                }
            } else {
                // a(al) + b(bl) + 进位
                int x = a.charAt(al) - '0';
                int y = b.charAt(bl) - '0';
                res = x + y + bit;
                al--; bl--;
            }

            bit = 0;
            if(res/10 != 0) {//大于10场景, 进位为1
                bit = res/10;
                buffer.append(res%10);
            } else {//小于10场景 
                buffer.append(res);
            }
        }
        if(bit != 0) {
            buffer.append(bit);
        }
        System.out.println(buffer.reverse().toString());
    }
}

全部评论

相关推荐

一颗宏心:华为HR晚上过了十二点后还给我法消息。
点赞 评论 收藏
分享
11-08 13:58
门头沟学院 Java
程序员小白条:竟然是蓝桥杯人才doge,还要花钱申领的offer,这么好的公司哪里去找
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务