题目描述:
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
提示:
- num1 和num2 的长度都小于 5100
- num1 和num2 都只包含数字 0-9
- num1 和num2 都不包含任何前导零
- 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式
代码如下:
class Solution {
public String addStrings(String num1, String num2) {
int m = num1.length();
int n = num2.length();
StringBuilder sb = new StringBuilder();
Stack<Character> stack1 = new Stack<>();
Stack<Character> stack2 = new Stack<>();
if (m >= n) {
for (int i = 0; i < m; i++) {
stack1.push(num1.charAt(i));
}
for (int j = 0; j < m - n; j++) {
stack2.push('0');
}
for (int k = 0; k < n; k++) {
stack2.push(num2.charAt(k));
}
} else {
for (int i = 0; i < n; i++) {
stack2.push(num2.charAt(i));
}
for (int j = 0; j < n - m; j++) {
stack1.push('0');
}
for (int k = 0; k < m; k++) {
stack1.push(num1.charAt(k));
}
}
int len = stack1.size();
int ans = 0;
int sum = 0;
for (int i = 0; i < len; i++) {
int x = stack1.pop() - '0';
int y = stack2.pop() - '0';
sum = x + y + ans;
if (sum >= 10) {
sb.append(sum - 10);
ans = 1;
} else {
sb.append(sum);
ans = 0;
}
}
if (sum >= 10) {
sb.append(1);
}
return sb.reverse().toString();
}
}
执行结果: