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所表示的数字,若没有则返回0int 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)