题目一:求两个字符串类型数字的和
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)))
字符串加法与高效求和技巧
本文介绍了一种利用Python实现两个大整数字符串相加的方法,并提供了多种优化方案。此外,还展示了如何通过不同方式高效计算1到5000间所有偶数的总和,包括使用循环、内置函数及函数式编程方法。
1013

被折叠的 条评论
为什么被折叠?



