题解 | #高精度整数加法#
高精度整数加法
https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6?tpId=37&tags=&title=&difficulty=0&judgeStatus=0&rp=1&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D37
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { // 注意 while 处理多个 case String a = in.nextLine(); String b = in.nextLine(); Stack<Integer> stack=new Stack<>(); StringBuilder sb=new StringBuilder(); int length1=a.length(); int length2=b.length(); //把短的字符串前面补0 if(length1>length2){ for(int i=0;i<length1-length2;i++){ sb.append(0); } sb.append(b); b=sb.toString(); }else{ for(int i=0;i<length2-length1;i++){ sb.append(0); } sb.append(a); a=sb.toString(); } //化为字符数组 char[] c1=a.toCharArray(); char[] c2=b.toCharArray(); int length=c1.length; int k=0;//进十标志 //从数组后面取数,逢十进一,保存进栈 for(int i=1;i<=c1.length;i++){ //先转为整数 int n1=c1[length-i]-'0'; int n2=c2[length-i]-'0'; int num=0; //两数相加,注意加上标志位,遇十进一 if(n1+n2+k>=10){ num=n1+n2+k-10; k=1; }else{ num=n1+n2+k; k=0; } stack.push(num); } //最后判断第一位是否需要进位 if(k==1){ stack.push(1); } while(stack.size()>0){ int num=stack.pop(); System.out.print(num); } } } }