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

高精度整数加法

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 s1 = in.nextLine();
        String s2 = in.nextLine();
        Map<Integer,Integer> posSum = new HashMap<>();//记录上一位的和是不是大于10,需要进位
        int n = Math.max(s1.length(),s2.length());
        while (s1.length()<n){//1+11转化为字符串01+11
            s1 = "0"+s1;
        }
        while (s2.length()<n){
            s2 = "0"+s2;
        }
        char[] arr1 = s1.toCharArray();
        char[] arr2 = s2.toCharArray();
        StringBuilder res = new StringBuilder();
        for (int i = n-1; i >= 0; i--) {//从个位开始遍历
            int n1=Integer.parseInt(String.valueOf(arr1[i]));
            int n2=Integer.parseInt(String.valueOf(arr2[i]));
            int sum = n1 + n2;
            //前面有无进位
            if(i<n-1){
                if(posSum.get(i+1)>=10)sum++;
            }
            posSum.put(i,sum);
            int cur = sum%10;//当前位
            res.append(cur);
            //最前面的一位,大于10的话则开头添一个'1'
            if(i==0 && sum>=10){
                res.append(1);
            }
        }
        System.out.println(res.reverse());
    }
}

全部评论

相关推荐

陆续:不可思议 竟然没那就话 那就我来吧 :你是我在牛客见到的最美的女孩
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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