Python:每日一题 339
今天的题目:给定两个仅含数字的字符串 a 和 b,返回一个由各位之和拼接成的字符串。
示例 1:
输入:a = "99", b = "111"
输出:"11010"
解释:因为 9 + 1 = 10,9 + 1 = 10,0 + 1 = 1,连接之后的结果是 "11010"。
示例 2:
输入:a = "2",b = "321"
输出:"323"
解释:因为 1 + 2 = 3,2 + 0 = 2,3 + 0 = 3,连接之后的结果是 "323"。
{:10_298:}欢迎大家一起答题!{:10_298:} 拼接是从右到左? 本帖最后由 最后的魁拔 于 2020-2-29 19:47 编辑
a = list(input())
b = list(input())
if len(a)==len(b):
c = max(len(a),len(b))
pass
else:
c = max(len(a),len(b))
if len(a)>len(b):
d = c-len(b)
for i in range(0,d):
b.insert(i,0)
else:
d = c - len(a)
for i in range(0,d):
a.insert(i,0)
str1=""
for i in range(0,c):
str1 += str(int(a)+int(b))
print(str1)
冬雪雪冬 发表于 2020-2-29 19:43
拼接是从右到左?
就是十位和十位上的数相加,个位和个位上的数相加,如果位上没有数,加的时候就用零来代替 本帖最后由 zltzlt 于 2020-2-29 19:54 编辑
冬雪雪冬 发表于 2020-2-29 19:43
拼接是从右到左?
不是,跟做加法类似
99
+ 111
-----------
1 10 10 最后的魁拔 发表于 2020-2-29 19:45
114 ms a = input('a = ')
b = input('b = ')
c = ''
if len(a) == len(b):
for i in range(len(a)):
c += str(int(a) + int(b))
else:
if len(a) > len(b):
for i in range(len(a) - len(b)):
b = '0' + b
for i in range(len(a)):
c += str(int(a) + int(b))
else:
for i in range(len(b) - len(a)):
a = '0' + a
for i in range(len(a)):
c += str(int(a) + int(b))
print(c)
好像没问题... wuqramy 发表于 2020-2-29 19:53
好像没问题...
38 ms zltzlt 发表于 2020-2-29 19:55
38 ms
什么意思呢 wuqramy 发表于 2020-2-29 19:57
什么意思呢
测试用例运行时长 38 毫秒 def func(a, b):
result = ''
n1 = len(a)
n2 = len(b)
a = '0' * (n2 - n1) + a
b = '0' * (n1 - n2) + b
for x, y in zip(a, b):
result += str(int(x) + int(y))
return result zltzlt 发表于 2020-2-29 19:57
测试用例运行时长 38 毫秒
{:10_323:}明白了 冬雪雪冬 发表于 2020-2-29 19:58
28 ms def _339(a, b):
list1 = []
list2 = []
for i in a:
list1.append(int(i))
for i in b:
list2.append(int(i))
if len(b) > len(a):
for i in range(len(b) - len(a)):
list1.insert(0, 0)
if len(a) > len(b):
for i in range(len(a) - len(b)):
list2.insert(0, 0)
str1 = ""
for i in zip(list1, list2):
str1 = str1 + str(sum(i))
return str1
请过目 ArmandXiao 发表于 2020-2-29 20:02
请过目
124 ms def f339(a,b):
def f(a,b):
if not a or not b:
return a+b
else:
return f(a[:-1],b[:-1])+str(int(a[-1])+int(b[-1]))
return f(a,b) a = input('第一个数字: ')
b = input('第二个数字: ')
a1 = len(a)
b1 = len(b)
if a1 < b1:
a3 = b1 - a1
a5 = len(b) - a3
i = 1
a4 = []
while i <= a5:
a2 = (int(a[-i]) + int(b[-i]))
a4.append(str(a2))
i += 1
a6 = len(b) - len(a)
i = 0
while i < a6:
a4.append((b))
i += 1
a4 = sorted(a4)
a7 = ''.join(a4)
print(a7)
塔利班 发表于 2020-2-29 20:18
如果用递归则不能处理过大的数据 xqq1984 发表于 2020-2-29 20:21
没有考虑 a1 >= b1 的情况 冬雪雪冬 发表于 2020-2-29 19:58
太强大了