原题链接: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/