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

高精度整数加法

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

import java.util.Scanner;

import java.math.*;



// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String line1 = in.nextLine();
        String line2 = in.nextLine();
        int maxLen = Math.max(line1.length() ,line2.length());
        line1 = appendZero(line1 ,maxLen);
        line2 = appendZero(line2 ,maxLen);
        //进位
        int add = 0;
        //最终结果集
        StringBuilder sb = new StringBuilder();
        for(int i = maxLen - 1 ; i >= 0 ; i--){
            int i1 = Integer.parseInt(String.valueOf(line1.charAt(i)));
            int i2 = Integer.parseInt(String.valueOf(line2.charAt(i)));
            String sum = String.valueOf(i1 + i2 + add);
            if(sum.length() == 1){
                sb.append(sum);
                add = 0;
            }else{
                //相加结果最大也只会是2位数
                sb.append(sum.charAt(1));
                add = Integer.parseInt(String.valueOf(sum.charAt(0)));
            }
        }
        if(add > 0){
            sb.append(add);
        }
        System.out.println(sb.reverse().toString());
    }

    public static String appendZero(String str ,int len){
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < len - str.length() ; i++){
            sb.append("0");
        }
        sb.append(str);
        return sb.toString();
    }
}

全部评论

相关推荐

爱读书的放鸽子能手很...:刷个两端实习,冲春招,流水线什么时候不能去
我的秋招日记
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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