415、字符串相加

image.png

方法:双指针法

用tmp记录指针指向的每一位数的和
如果有进位用carry记录
将每一位计算的结果添加到可变字符串res中
如果指针遍历完毕之后仍有进位carry,则再将进位添加到res
最后反转res字符串得到两字符串之和

public String addStrings(String nums1,String nums2){
        //res = 对应两个数计算后的值
        StringBuilder res = new StringBuilder("");
        int i = nums1.length()-1, j = nums2.length()-1;
        //tmp表示,指针指向的相对两个数组的两个数的和=n1.value+n2.value+carry
        //carry = 进位值(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();
    }

时间复杂度O(N)
空间复杂度O(S)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容