题解 | #高精度整数加法#
高精度整数加法
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));
}
}
新手一枚,可以提建议勿喷,手动狗头!


