给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
提示:
num1 和num2 的长度都小于 5100
num1 和num2 都只包含数字 0-9
num1 和num2 都不包含任何前导零
- 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式
根据朴素的加法思想,关键在于模拟竖式计算,用一个字符串存储进位,每一列超过十进位。
注意要对齐,在短的字符串首部补零。字符串的生成使用拼接的方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
public static String addStrings(String num1, String num2) {
String numjinwei="0";
String addsum="";
int n1=num1.length();
int n2=num2.length();
if(n1>n2) for(int i=0;i<n1-n2;i++) num2="0"+num2;
else for(int i=0;i<n2-n1;i++) num1="0"+num1;
//对齐
int n_max=Integer.max(n1,n2);
int jinwei=0;
for(int i=0;i<n_max;i++){
int temp_lenthof_numjinwei=numjinwei.length();
int t1=num1.charAt(n_max-1-i)-48;
int t2=num2.charAt(n_max-1-i)-48;
int t3=numjinwei.charAt(temp_lenthof_numjinwei-1-i)-48;
int temp=t1+t2+t3;
jinwei=temp/10;
int val=temp%10;
numjinwei=jinwei+numjinwei;
addsum=val+addsum;
}
if(jinwei==1){
addsum=jinwei+addsum;
}
return addsum;
}
|