给定两个字符串形式的非负整数 num1
和num2
,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger
), 也不能直接将输入的字符串转换为整数形式。
示例 1:
输入:num1 = "11", num2 = "123" 输出:"134"
思路
利用双指针算法,将两个指针分别指向两个字符串末尾,依次相加。
class Solution {
public String addStrings(String num1, String num2) {
StringBuffer s=new StringBuffer(); //存储最后答案
int i=num1.length()-1,j=num2.length()-1,carry=0; //carry记录进位
while(i>=0||j>=0){
int n= i>=0 ? num1.charAt(i) - '0':0;
int m= j>=0 ? num2.charAt(j) - '0':0;
int t=n+m+carry;
carry=t/10;
s.append(t%10);
i--;j--;
}
if(carry==1) s.append(1); //最后如果进位了,把进位也存进来
return s.reverse().toString(); //最后答案记得反转一下
}
}