Problem: 415. 字符串相加
文章目录
- 思路
- Code
- 复杂度
- 运行结果
思路
创建一个StringBuilder对象使用append方法追加每位数字相加,使用双指针的方式,指针i,j分别指向num1和num2的每位数字,从后往前,进位用carry存储着。
得到答案后,然后反转StringBUilder再转化为String即可。
Code
class Solution {
public String addStrings(String num1, String num2) {
StringBuilder ans=new StringBuilder();
//i指向num1的每位数字,从后向前
int i=num1.length()-1;
//j指向num2的每位数字,从后向前
int j=num2.length()-1;
int carry=0 ;
while (i>=0||j>=0){
//取出i,j所表示的数字,若没有则返回0
int n1=i>=0?num1.charAt(i)-'0':0;
int n2=j>=0?num2.charAt(j)-'0':0;
//求和
int count=n1+n2+carry;
carry=count/10;
//给答案追加数字
ans.append(count%10);
i--;j--;
}
//结束后,carry如果还有值,则追加
if (carry==1)ans.append(1);
//取反
return ans.reverse().toString();
}
}
复杂度
-
时间复杂度: O(max) max表示两个字符串中最长的一个长度
-
空间复杂度: O(1)