题目
以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。
(字符串长度不大于100000,保证字符串仅由'0'~'9'这10种字符组成)
输入:
输出:
Tips:
思路
分析
该题目重点在于获取当前栈中的min值。
考虑为原栈stack1,新建一个stack2栈用来维持stack1中的最小数。由于栈FILO的特性,只需要保证stack2中的栈顶元素维持在一个最小值水平即可。
实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| import java.util.*;
public class Solution {
public String solve (String s, String t) { StringBuilder sb = new StringBuilder(); int i = s.length() - 1; int j = t.length() - 1; int carry = 0; while(i >= 0 || j >= 0 || carry != 0){ int x = i < 0 ? 0 : s.charAt(i--) - '0'; int y = j < 0 ? 0 : t.charAt(j--) - '0'; int sum = x + y + carry; sb.append(sum % 10); carry = sum / 10; } return sb.reverse().toString(); } }
|