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

高精度整数加法

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

这道题看似简单需要注意的点特别多

1、当计算完成结果之后,如何处理结果输出?

结果输出有多重情况,通过测试用例发现很多需要注意的点总结如下

1、如果长字符串多余部分很长连 Long,Integer都放不下,需要考虑BigInt这个类型

2、计算完的结果有无进位需要单独考虑

计算结果需要倒置的哈,这一点儿非常关键

时间复杂度,空间复杂度O(n)


import java.math.BigInteger;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str1 = in.nextLine();
        String str2 = in.nextLine();
        //倒序求
        int addOpera = 0;
        if (str1.length() > str2.length()) {
            String temp = str1;
            str1 = str2;
            str2 = temp;
        }
        System.out.println(findResult(str1, str2));

    }

    private static String findResult(String str1, String str2) {
        StringBuffer result = new StringBuffer();
        int diff = str2.length() - str1.length();
        boolean hasJw = false;
        for (int i = str1.length() - 1; i >= 0; i--) {
            int a = Character.digit(str1.charAt(i), 10);
            int b = Character.digit(str2.charAt(diff + i), 10);
            int temp = a + b;
            if (hasJw) {
                temp++;
            }
            if (temp >= 10) {
                hasJw = true;
            } else {
                hasJw = false;
            }
            result.append(temp % 10);

        }
        String str3 = str2.substring(0, str2.length() - str1.length());
        if (str3.length() > 0) {
            BigInteger int3 = new BigInteger(str3);


            if (hasJw) {
              int3=  int3.add(new BigInteger("1"));
            }

            result.reverse();


            return String.valueOf(int3) + result.toString();
        }else{
              result.reverse();
              if(hasJw){
				return  "1"+result.toString();
              }else{
                return  result.toString();
              }
               
        }


    }

}

全部评论

相关推荐

07-29 14:09
门头沟学院 Java
我爱o泡我爱o泡o泡果奶ooo
26加瓦鼠鼠:三个offer了,停手吧,回头是岸
点赞 评论 收藏
分享
点赞 评论 收藏
分享
08-01 18:35
湖南大学 C++
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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