力扣(leetcode) 415. 字符串相加 (反向双指针法)

该博客详细解析了LeetCode上的《Add Strings》问题,通过将字符串转化为整数列表,然后使用双指针从后向前遍历进行加法计算,解决字符串相加的问题。博主提供了完整的Python代码实现,并对思路进行了清晰的阐述。
摘要由CSDN通过智能技术生成

题目在这:https://leetcode-cn.com/problems/add-strings/

思路分析:

将字符串像整数那样进行相加。
首先遍历两个字符串,将他们的长度变为一样的,短的哪一个在前置位补0。
然后建立两个空列表 n1和n2,遍历两个字符串,将每个字符变成int型加入到列表中。

使用双指针法,分别指向两个列表的最后一位,向前遍历。注意:这里一定是从后向前遍历,前面一定是在前置位补0. 因为在做加法计算的时候,是从右向左计算,有进位的,往左边进位。

中间使用temp记录进位即可。

完整代码

class Solution:
    def addStrings(self, num1: str, num2: str) -> str:
        n1 = []
        n2 = []
        # 将两个字符串变成相同的长度 少的补0
        while len(num1) < len(num2):
            num1 = '0' + num1
        while len(num1) > len(num2):
            num2 = '0' + num2
        # 全部变成int型加入列表
        for i in range(len(num1)):
            n1.append(int(num1[i]))

        for j in range(len(num2)):
            n2.append(int(num2[j]))

        print(n1,n2)

        res = []
        i = len(n1) -1
        j = len(n2) -1
        temp = 0
        while True:
            if n1[i] + n2[j] + temp >=10:
                res.append(n1[i] + n2[j] - 10 + temp)
                temp = 1

            elif n1[i] + n2[j] + temp <10:
                res.append(n1[i] + n2[j] + temp)
                temp = 0

            i -=1
            j -=1
            if i <0 and j < 0 :
                break
        print(res[::-1])
        ans = ""
        for k in res[::-1]:
            ans += str(k)
        if temp == 1:
            ans = '1' + ans
        print(ans)
        return ans
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深度不学习!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值