ouyunfu
发表于 2020-2-29 20:29:12
def f339(a:str,b:str)->str:
m=len(a)-len(b)
if m>=0:
b='0'*m+b
res=''
for i in range(len(a)):
res+=str(int(a)+int(b))
return res
else:
return f339(b,a)
a = "99"
b = "111"
print(f339(a,b))
冬雪雪冬
发表于 2020-2-29 20:29:30
ArmandXiao 发表于 2020-2-29 20:25
太强大了
我花了好几行用来将2个字符串补齐,应该有更好的方法。
zltzlt
发表于 2020-2-29 20:32:29
ouyunfu 发表于 2020-2-29 20:29
34 ms
ArmandXiao
发表于 2020-2-29 20:35:15
冬雪雪冬 发表于 2020-2-29 20:29
我花了好几行用来将2个字符串补齐,应该有更好的方法。
我绝对你这个足够强大了
太厉害了
我必须学习!
TJBEST
发表于 2020-2-29 21:05:37
来晚了
def fun339(a,b):
def add(num1,num2):
result = ''
M = len(num1)
for i in range(0,M):
result += str(int(num1)+int(num2))
return result
a_lenth = len(a)
b_lenth = len(b)
if a_lenth>b_lenth:
return a + add(a[(a_lenth-b_lenth):],b)
else:
return b + add(b[(b_lenth-a_lenth):],a)
zltzlt
发表于 2020-2-29 21:07:44
TJBEST 发表于 2020-2-29 21:05
来晚了
26 ms
塔利班
发表于 2020-2-29 21:24:12
zltzlt 发表于 2020-2-29 20:23
如果用递归则不能处理过大的数据
def f339(a,b):
if len(a)>len(b):
a,b=b,a
return b[:-len(a)]+''.join()])
zltzlt
发表于 2020-2-29 21:26:22
塔利班 发表于 2020-2-29 21:24
{:10_275:}23 ms
kinkon
发表于 2020-2-29 21:39:30
本帖最后由 kinkon 于 2020-2-29 21:58 编辑
没时间,后面再优化
def f339(a, b):
a, b = a[::-1], b[::-1]
alen,blen = len(a), len(b)
if alen < blen:
M = alen
else:
M = blen
s = ''
for i in range(M):
s += str(int(a) + int(b))
s += a + b
return s[::-1]
zltzlt
发表于 2020-2-29 21:40:42
kinkon 发表于 2020-2-29 21:39
没时间,后面在优化
输入 a = "99", b = "111" 结果有误
kinkon
发表于 2020-2-29 21:55:43
本帖最后由 kinkon 于 2020-2-29 23:54 编辑
这次应该对了吧
def f339(a, b):
a, b = a[::-1], b[::-1]
alen,blen = len(a), len(b)
if alen < blen:
M = alen
else:
M = blen
s = ''
for i in range(M):
s += str(int(a) + int(b))[::-1]
s += a + b
return s[::-1]
字符串不翻转试试会不会快一些
def f339(a, b):
alen,blen = len(a), len(b)
if alen < blen:
M = alen
else:
M = blen
s = ''
for i in range(-M, 0):
s += str(int(a) + int(b))
s = a[:-M] + b[:-M] + s
return s
再精简,好像会更快一些
def f339(a, b):
M = min(len(a), len(b))
return a[:-M] + b[:-M] + ''.join() + int(b)) for i in range(-M, 0)])
fan1993423
发表于 2020-2-29 21:56:26
def fun339(a,b):
return ''.join()+int(i)) for i in list(zip(a.zfill(len(b)),b))]) if len(a)<len(b) else ''.join()+int(i)) for i in list(zip(a,b.zfill(len(a))))])
fan1993423
发表于 2020-2-29 22:05:01
冬雪雪冬 发表于 2020-2-29 20:29
我花了好几行用来将2个字符串补齐,应该有更好的方法。
字符串zfill方法,或者假定a的长度大于b f'{b:0>(len(a)}'
冬雪雪冬
发表于 2020-2-29 22:07:33
fan1993423 发表于 2020-2-29 22:05
字符串zfill方法,或者假定a的长度大于b f'{b:0>(len(a)}'
是的
jdzzj
发表于 2020-2-29 22:09:42
本帖最后由 jdzzj 于 2020-2-29 22:14 编辑
def fun339(a,b):
res=""
a=list(a)
b=list(b)
while len(a)!=len(b):
if len(a)>len(b):
b.insert(0,"0")
else:
a.insert(0, "0")
for i in range(len(a)):
res += str(int(a) + int(b))
return res
fan1993423
发表于 2020-2-29 22:10:59
def fun339(a,b):
return ''.join() if len(a)<len(b) else ''.join()
wcshds
发表于 2020-2-29 22:21:24
def test(a, b):
figures = max()
a = tuple(a.zfill(figures))
b = tuple(b.zfill(figures))
a_b = tuple(map(lambda x, y: str(int(x) + int(y)), a, b))
return ''.join(a_b)
zfill眞好用
wcshds
发表于 2020-2-29 22:23:04
wcshds 发表于 2020-2-29 22:21
zfill眞好用
啊,已经有人用了{:10_257:}
fan1993423
发表于 2020-2-29 22:30:15
wcshds 发表于 2020-2-29 22:23
啊,已经有人用了
没事,我相信只是思路巧合,这个我一看完题就反应了zfill和f''两种方法
nl2020
发表于 2020-2-29 22:46:02
a=input('a=')
b=input('b=')
if len(a)>len(b):
a,b=b,a
else:
pass
f=''
b1=b
for i in range(len(a)):
c=int(a)+int(b1)
f+=str(c)
b2=b[:len(b)-len(a)]
d=b2+f
print(d)
来了,怎么设置代码模式