字符串相加、偶数求和 - Python

题目一:求两个字符串类型数字的和

class Solution:
    def addStrings(self, num1: str, num2: str) -> str:
        li1, len1 = list(num1), len(num1)
        li2, len2 = list(num2), len(num2)
        res = []
        before = 0
        if len1 < len2:
            for i in range(len2 - len1):
                li1.insert(0, '0')
        elif len1 > len2:
            for i in range(len1 - len2):
                li2.insert(0, '0')
        print(li1,li2)
        for i in range(len(li1)-1, -1, -1):
            temp = int(li1[i]) + int(li2[i]) + before
            now = temp % 10
            before = temp // 10
            res.insert(0,str(now))
        if before != 0:
            res.insert(0,str(before))
        return ''.join(res)

优化的解法:

class Solution:
    def addStrings(self, num1: str, num2: str) -> str:
        i, j = len(num1) - 1, len(num2) - 1
        carry = 0
        res = ''
        while i >= 0 or j >= 0:
            n1 = int(num1[i]) if i >= 0 else 0
            n2 = int(num2[j]) if j >= 0 else 0
            temp = n1 + n2 + carry
            carry = temp // 10
            res = str(temp % 10) + res
            i, j = i - 1, j - 1
        return '1' + res if carry else res

题目二:一行实现1-5000之间所有偶数求和

# 常规写法
res = 0
for i in range(5001):
    if i % 2 == 0:
        res += i
print(res)

# 这么写还是错的
# res += i for i in range(2, 5001, 2)
#     print(res)

# 优化一:range步长为2
res = 0
for i in range(2, 5001, 2):
    res += i
print(res)

# 优化二:使用sum函数和range函数
print(sum(range(2, 5001, 2)))

# 优化三:使用reduce函数和lambda函数
from functools import reduce
print(reduce(lambda a, b: a + b, range(2, 5001, 2)))

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值