AcWing 791. 高精度加法
原题链接
简单
作者:
Empty
,
2019-11-06 13:08:29
,
所有人可见
,
阅读 547
java 代码
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();
System.out.println(slove(a, b));
}
public static String slove(String a, String b){
int len1 = a.length();
int len2 = b.length();
if (len1 == 0 && len2 == 0)
return "0";
if (len1 == 0)
return b;
if (len2 == 0)
return a;
char[] chs1 = a.toCharArray();
char[] chs2 = b.toCharArray();
int l = len1 - 1;
int r = len2 - 1;
boolean isCarry = false;
StringBuilder ans = new StringBuilder("");
while (l >= 0 || r >= 0) {
int sum = 0;
if (l >= 0 && r >= 0) {
sum = (int) (chs1[l] - '0') + (int) (chs2[r] - '0');
}
if (l >= 0 && r < 0)
sum = (int) (chs1[l] - '0');
if (r >= 0 && l < 0)
sum = (int) (chs2[r] - '0');
sum = isCarry ? sum + 1 : sum;
isCarry = (sum >= 10);
ans.append(sum % 10);
l--;
r--;
}
if (isCarry)
ans.append('1');
return ans.reverse().toString();
}
}