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

高精度整数加法

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

这道题的思路还是挺简单的,关键就要看你细心不细心了。

创建一个 int 类型的数组 res ,从后往前遍历两个字符串中的字符,将它们转换为 int 类型之后,再相加得到值 sum,插入 res 数组的顺序也是从后往前依次插入,插入的值要根据 sum 是否大于 0 做判断。

由于我们创建的数组的长度是两个字符串中较大的长度,因此在结束循环时还需要判断是否有进位。

最后将该数组拼接为字符串即可。

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            String str1 = in.next();
            String str2 = in.next();
            int res[] = new int[Math.max(str1.length(),str2.length())];
            int index = res.length-1;  //插入新数组的索引
            int number = 0;  //记录进位
            for(int i=str1.length()-1,j=str2.length()-1;i>=0||j>=0;j--,i--){
                int num1 = 0,num2 = 0;
                if(i>=0) num1 = str1.charAt(i) - '0';
                if(j>=0) num2 = str2.charAt(j) - '0';
                int sum = num1 + num2 + number;
                res[index--] = sum>=10 ? sum-10 : sum;  //如果有进位,那么减去10就是当前值
                number = sum>=10 ? 1 : 0;  //大于十则有进位
            }
            StringBuffer sb = new StringBuffer();
            if(number == 1) sb.append(1);  //如果有进位,则先拼接一个 1 。
            for(int n:res) sb.append(n);
            System.out.println(sb.toString());
        }
    }
}
全部评论

相关推荐

牛客410815733号:这是什么电影查看图片
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务