题解 | #大数加法#
大数加法
https://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475
解题思路:
这道题是我自己解答出来的。
其实很简单,主要用一个while驱动数据前进, 两个嵌套在while里面的if个字取尾部数据相加,放到用LinkedList做的stack里面就好了,最后就是根据stack先进后出的顺序,把大值从栈里面取出给到stringbuffer组装就好了
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算两个数之和 * @param s string字符串 表示第一个整数 * @param t string字符串 表示第二个整数 * @return string字符串 */ public String solve (String s, String t) { if(s.length()==0 || t.length()==0) { return s+t; } int m = s.length(); int n = t.length(); int i = m-1; int j = n-1; LinkedList<Integer> stack = new LinkedList<>(); StringBuffer res = new StringBuffer(); int enter = 0; //记录进位 while(i>=0 || j >=0) { // 截取s尾部第一个字符 int sv = 0; if(i>=0) { sv = s.charAt(i) - '0'; i--; } // 截取t尾部第一个字符 int tv = 0; if(j>=0) { tv = t.charAt(j) - '0'; j--; } // 两个字符相加,包括上次进位的 int temp = sv + tv + enter; enter = temp >= 10? 1: 0; stack.push(temp%10); } if(enter>0) { stack.push(enter); } while(!stack.isEmpty()) { int value = stack.pop(); res.append(value); } return res.toString(); } }