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

高精度整数加法

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

import java.util.Scanner; 

import java.math.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
//思路123, 24567,在此基础上添加0,如000123,024567,然后字符进行相加,最后处理如果结果第一位为0删除,剩下的就是结果
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        StringBuilder retStr = new StringBuilder();
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String[] a = new String[2];
            a[0] = in.next();
            a[1] = in.next();

           //补0,俩个字段长度少的补0
            int n = a[0].length()-a[1].length();
            //计算添0
            if (n>0){
                a[1] = addZero(a[1],Math.abs(n));
                a[0] = "0"+a[0];
            }else if(n<0){
                a[0] = addZero(a[0],Math.abs(n));
                a[1] = "0"+a[1];
            }else{
                a[0] = "0"+a[0];
                a[1] = "0"+a[1];
            }

            // System.out.println(a[1].length());
           
            // retStr = addZero(retStr,a[0].length()-1);
            for(int m = 0;m<a[0].length();m++)
                retStr.append("0");
            int i = a[0].length()-1;
            int j = 0;
            while(i>0){
                int b = Integer.parseInt(a[0].substring(i,i+1));
                int c = Integer.parseInt(a[1].substring(i,i+1));
                int add = Integer.parseInt(retStr.substring(i,i+1));
                //代表进位的数
                int addno =  (b+c+add)>=10?1:0;
                int rc = (b+c+add)%10;
                
                if (addno ==0)
                    retStr.replace(i,i+1,""+rc);
                else{
                    retStr.replace(i,i+1,""+rc);
                    retStr.replace(i-1,i,""+addno);
                }
                i--;
            }
            if (retStr.substring(0,1).equals("0")){
                retStr.delete(0,1);
            }
            System.out.println(retStr);
        }
    }
   //字符前面添0
   static String addZero(String zeroString,int n){
        for(int i = 0; i<n+1;i++)
            zeroString ="0"+zeroString;
        return zeroString; 
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务