方法:雙指針法
用tmp記錄指針指向的每一位數(shù)的和
如果有進(jìn)位用carry記錄
將每一位計(jì)算的結(jié)果添加到可變字符串res中
如果指針遍歷完畢之后仍有進(jìn)位carry,則再將進(jìn)位添加到res
最后反轉(zhuǎn)res字符串得到兩字符串之和
public String addStrings(String nums1,String nums2){
//res = 對(duì)應(yīng)兩個(gè)數(shù)計(jì)算后的值
StringBuilder res = new StringBuilder("");
int i = nums1.length()-1, j = nums2.length()-1;
//tmp表示,指針指向的相對(duì)兩個(gè)數(shù)組的兩個(gè)數(shù)的和=n1.value+n2.value+carry
//carry = 進(jìn)位值(0或1)
int carry=0;
while (i>=0 || j>=0){
int n1 =i >=0 ? nums1.charAt(i)-'0':0;
int n2 =j >=0 ? nums2.charAt(j)-'0':0;
int tmp = n1+n2+carry;
carry = tmp/10;
res.append(tmp%10);
i--;
j--;
}
if (carry==1){
res.append(1);
}
return res.reverse().toString();
}
時(shí)間復(fù)雜度O(N)
空間復(fù)雜度O(S)