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

高精度整数加法

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

解题思路

  • 遍历相加,短字符串前面补0到和长字符串一样长,同时在两者前面再加一个0
  • 短字符串 长度 为 l;
  • 长字符串 长度 为 L;
  • 则补齐0后长度 两者的字符串长度为 L+1;
  • 比如 15682 和 321 相加,则先补齐 字符串为 015682 和 000321;
  • 之所以在长字符串前还要补0 是为了防溢出。
  • 最后在处理得到字符前面去除多余的0得到最终结果
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String a = in.next();
        String b = in.next();
        if(a.length()<b.length()){
            String t = b;
            b  = a;
            a = t;
        }
        int length1 = a.length()-b.length();
        for(int i=0;i<length1;i++)
            b = "0"+b;
        a = "0"+a;
        b = "0"+b;
        String str = "";
        int length = a.length();
        int num;
        int num1 = 0;
        for(int i=length-1;i>=0;i--){
            num = Integer.parseInt(a.substring(i,i+1))+Integer.parseInt(b.substring(i,i+1))+num1;
            str = num%10+str;
            num1 = num/10;
        }
        int i;
        for(i=0;i<str.length();i++){
            if(!str.substring(i,i+1).equals("0"))
                break;
        }
        
        if(i==str.length())
            System.out.println(0);
        else
            System.out.println(str.substring(i));
    }
}

新手一枚,可以提建议勿喷,手动狗头!

全部评论

相关推荐

11-05 10:55
中南大学 Java
要双修的猫头鹰:这面试官怕不是个m
我来点评面试官
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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