题解 | #高精度整数加法#
高精度整数加法
https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String s1 = in.nextLine(); String s2 = in.nextLine(); Map<Integer,Integer> posSum = new HashMap<>();//记录上一位的和是不是大于10,需要进位 int n = Math.max(s1.length(),s2.length()); while (s1.length()<n){//1+11转化为字符串01+11 s1 = "0"+s1; } while (s2.length()<n){ s2 = "0"+s2; } char[] arr1 = s1.toCharArray(); char[] arr2 = s2.toCharArray(); StringBuilder res = new StringBuilder(); for (int i = n-1; i >= 0; i--) {//从个位开始遍历 int n1=Integer.parseInt(String.valueOf(arr1[i])); int n2=Integer.parseInt(String.valueOf(arr2[i])); int sum = n1 + n2; //前面有无进位 if(i<n-1){ if(posSum.get(i+1)>=10)sum++; } posSum.put(i,sum); int cur = sum%10;//当前位 res.append(cur); //最前面的一位,大于10的话则开头添一个'1' if(i==0 && sum>=10){ res.append(1); } } System.out.println(res.reverse()); } }