描述
输入两个用字符串 str 表示的整数,求它们所表示的数之和。
数据范围: 1≤len(str)≤10000
输入描述:
输入两个字符串。保证字符串只含有'0'~'9'字符
输出描述:
输出求和后的结果
示例1
输入:
9876543210 1234567890
复制输出:
11111111100
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
String a = in.nextLine();
String b = in.nextLine();
System.out.println(getRes(a, b));
}
}
public static String getRes(String a, String b) {
char[] a1 = a.toCharArray();
char[] b1 = b.toCharArray();
int aLen = a1.length;
int bLen = b1.length;
int max = aLen > bLen ? aLen : bLen;
int min = aLen < bLen ? aLen : bLen;
int step = 0;
int i1=aLen-1, i2=bLen-1;
StringBuilder builder = new StringBuilder();
while (i1>-1 || i2>-1) {
int t1 = 0;
if (aLen==max) {
t1 = a1[i1] - '0';
}
else {
t1 = i1>-1?a1[i1] - '0':0;
}
int t2 = 0;
if (bLen==max) {
t2 = b1[i2] - '0';
}
else {
t2 = i2>-1?b1[i2] - '0':0;
}
builder.append((t1+t2+step)%10);
step = (t1+t2+step)/10;
i1--;
i2--;
}
if (step > 0) {
builder.append(step);
}
return builder.reverse().toString();
}
}