原题链接:https://leetcode.com/problems/add-strings/
1. Description
Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2.
Note:
The length of both num1 and num2 is < 5100.
Both num1 and num2 contains only digits 0-9.
Both num1 and num2 does not contain any leading zero.
You must not use any built-in BigInteger library or convert the inputs to integer directly.
2. Solution
This solution is from
https://leetcode-cn.com/problems/add-strings/solution/add-strings-shuang-zhi-zhen-fa-by-jyd/
We can set veritable carry to count the carry number.
Traverse the two Strings backward. Add digit one by one with carry.
Ten of temp is assigned to carry。One of temp is added to ans.
code
class Solution {
public String addStrings(String num1, String num2) {
StringBuilder ans = new StringBuilder();
int i = num1.length()-1;
int j = num2.length()-1;
int carry = 0;
//add digits from num1 and num2 backfard
//temp: the digits of ones should be added to ans
//temp: the digits of tens should be assigned to carry
while(i >= 0 || j >= 0){
int a = i<0 ? 0 : num1.charAt(i) - '0';
int b = j<0 ? 0 : num2.charAt(j) - '0';
int temp = a+b+carry;
ans.append( temp % 10 );
carry = temp/10;
i--;
j--;
}
//check if any carry left
if(carry ==1){
ans.append(1);
}
return ans.reverse().toString();
}
}
3. Reference
https://leetcode-cn.com/problems/add-strings/solution/add-strings-shuang-zhi-zhen-fa-by-jyd/

本文介绍了一种解决LeetCode上字符串加法问题的双指针算法,该算法无需使用内置的大数库或直接将输入转换为整数。通过从两个字符串的末尾开始遍历并逐位相加,同时处理进位,最后反转结果得到答案。
797

被折叠的 条评论
为什么被折叠?



