字符串相加(力扣)

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)

运行结果

字符串相加(力扣)_第1张图片

你可能感兴趣的:(leetcode题目,leetcode,算法,职场和发展)