题目描述:
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。1
- 代码:
public String addStrings(String num1, String num2) {
int m = num1.length();
int n = num2.length();
if(m == 0 || num1.equals("0")) return num2;
if(n == 0 || num2.equals("0")) return num1;
int[] res = new int[m+n];
int pos = 0;//进位
int idx = m+n-1;
int idx1 = m-1;
int idx2 = n-1;
while (idx1 >=0 || idx2 >= 0){
if(idx1 < 0){
int num = (num2.charAt(idx2--) - '0') + pos;
res[idx--] = num % 10;
pos = num / 10;
continue;
}
if(idx2 < 0){
int num = (num1.charAt(idx1--) - '0') + pos;
res[idx--] = num % 10;
pos = num / 10;
continue;
}
int num = (num2.charAt(idx2--) - '0') + (num1.charAt(idx1--) - '0') + pos;
res[idx--] = num % 10;
pos = num / 10;
}
//处理最后的进位
res[idx] = pos;
StringBuilder sb = new StringBuilder();
for(int i = 0;i<m+n;i++){
if(!(res[i] == 0 && sb.length() == 0)) sb.append(res[i]);
}
return sb.toString();
}
https://leetcode-cn.com/problems/add-strings/ ↩︎