415. Add Strings
题目描述和难度
- 题目描述:
给定两个字符串形式的非负整数 num1
和num2
,计算它们的和。
注意:
num1
和num2
的长度都小于 5100.num1
和num2
都只包含数字0-9
.num1
和num2
都不包含任何前导零。- 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
- 题目难度:简单。
- 英文网址:415. Add Strings 。
- 中文网址:415. 字符串相加 。
思路分析
求解关键:这道题算是一个经典问题了,和 LeetCode 第 2 题是一类问题。
参考解答
参考解答1
public class Solution {
public String addStrings(String num1, String num2) {
StringBuilder stringBuilder = new StringBuilder();
int len1 = num1.length();
int len2 = num2.length();
// 考虑特殊情况,直接返回结果
if (len1 == 0) {
return num2;
}
if (len2 == 0) {
return num1;
}
int index1 = len1 - 1;
int index2 = len2 - 1;
int sum = 0;
while (index1 >= 0 || index2 >= 0) {
if (index1 >= 0) {
int a = num1.charAt(index1) - '0';
sum += a;
index1--;
}
if (index2 >= 0) {
int b = num2.charAt(index2) - '0';
sum += b;
index2--;
}
stringBuilder.append(sum % 10);
// 表示是否进位
sum /= 10;
}
// 最后这一步不要忘记了
if (sum == 1) {
stringBuilder.append(1);
}
return stringBuilder.reverse().toString();
}
public static void main(String[] args) {
Solution solution = new Solution();
String num1 = "1234";
String num2 = "5678";
String addStrings = solution.addStrings(num1, num2);
System.out.println(addStrings);
System.out.println(Integer.valueOf(num1) + Integer.valueOf(num2));
}
}
本篇文章的地址为 https://liweiwei1419.github.io/leetcode-solution/leetcode-0415-add-strings ,如果我的题解有错误,或者您有更好的解法,欢迎您告诉我 liweiwei1419@gmail.com 。