Given two non-negative integers num1
and num2
represented
as string, return the sum of num1
and num2
.
Note:
- The length of both
num1
andnum2
is < 5100. - Both
num1
andnum2
contains only digits0-9
. - Both
num1
andnum2
does not contain any leading zero.
- You must not use any built-in BigInteger library or convert the inputs to integer directly.
此题比较简单,注意的是不能直接转成整型去计算,只能一位一位相加,并判断是否进位。
使用stringbuffer而不是string+string来提高效率
public class Solution {
public String addStrings(String num1, String num2) {
int i=num1.length()-1;
int j=num2.length()-1;
StringBuffer res=new StringBuffer();
int carry=0;
while(i>=0||j>=0){
int a=i>=0?num1.charAt(i--)-'0':0;
int b=j>=0?num2.charAt(j--)-'0':0;
int sum=a+b+carry;
res.insert(0, sum%10);
carry=sum/10;
}
if(carry!=0){
res.insert(0, 1);
}
return res.toString();
}
}