Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
一、题目描述:
415. 字符串相加 - 力扣(LeetCode) (leetcode-cn.com)
给定两个字符串形式的非负整数
num1和num2,计算它们的和并同样以字符串形式返回。你不能使用任何內建的用于处理大整数的库(比如
BigInteger), 也不能直接将输入的字符串转换为整数形式。
示例 1:
输入:num1 = "11", num2 = "123"
输出:"134"
示例 2:
输入:num1 = "456", num2 = "77"
输出:"533"
示例 3:
输入:num1 = "0", num2 = "0"
输出:"0"
提示:
- 1 <= num1.length, num2.length <= 10^4
- num1 和num2 都只包含数字 0-9
- num1 和num2 都不包含任何前导零
二、思路分析:
- 把字符串中的每个元素转换成对应的数字相加,但是要考虑进位问题,把每次相加的结果对10求余为相加结果加入到结果字符串sb中,对10求整为求进位。
- 最后把结果翻转输出即可。
三、AC 代码:
class Solution {
public String addStrings(String num1, String num2) {
int crray=0;//表示进位位
int i=num1.length()-1;
int j=num2.length()-1;
StringBuilder sb=new StringBuilder();
while(crray==1||i>=0||j>=0){
int a=i<0?0:num1.charAt(i--)-'0';
int b=j<0?0:num2.charAt(j--)-'0';
sb.append((a+b+crray)%10);
crray=(a+b+crray)/10;
}
return sb.reverse().toString();
}
}
四、总结:
典型的双指针适合的题了~
范文参考:
Java 手把手一句一句写代码 超过 99% 思路清晰 代码简洁 - 字符串相加 - 力扣(LeetCode) (leetcode-cn.com)