gpt4 book ai didi

python - 递归混合字符串

转载 作者:太空宇宙 更新时间:2023-11-04 09:12:45 26 4
gpt4 key购买 nike

我试图递归地将两个字符串链接在一起,但没有得到预期的结果:

对于两个字符串 "abcd""xyz" - 预期输出应该是 "axbyczd":

def strr(str1, str2):

def recstr(str1, str2, prn):
if str1 == '':
return str2
if str2 == '':
return str1
else:
return prn + recstr(str1[:len(str1)-len(prn)],str2[:len(str2)-len(prn)],prn)
return recstr(str1, str2, '')

print strr("abcdef","12345")

最佳答案

当您用完任一字符串中的字符时,您返回另一个字符串而不将其连接到正在运行的累加器。看看当 s1s2 为空时我做了什么。

此外,在您的递归情况下,您对 s1s2 进行了非常复杂的切片。你真的应该只需要切片 s1[1:]s2[1:]

应该这样做

def recstr(s1, s2, answer=''):
if not s1:
return answer+s2
if not s2:
return answer+s1
return recstr(s1[1:], s2[1:], answer+s1[0]+s2[0])

In [15]: s1,s2 = 'abcd', 'xyz'

In [16]: print recstr(s1,s2)
axbyczd

当然,更简洁的方法是使用 itertools.izip_longestitertools.chain.from_iterable :

In [23]: zips = itertools.izip_longest(s1,s2, fillvalue='')

In [24]: ''.join(itertools.chain.from_iterable(zips))
Out[24]: 'axbyczd'

[感谢@AshwiniChaudhary 指出 izip_longest 中的 fillvalue 参数]

希望对你有帮助

关于python - 递归混合字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13213465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com