我有一个字符串s
。我采用字符串s
的所有偶数索引字符并将它们推到前面,而所有奇数索引字符都推到后面。然后,我将s
字符串连接起来。
现在,我想这样做N-times
,但是对于长字符串和N
大于十亿的代码,我正在使用的代码失败了。
def n_iters(s, n):
for i in range(n):
s = s[::2] + s[1::2]
return s
有什么想法可以优化它吗?
代码失败的示例将是长度为s
和8000000
的字符串N = 100000000
。
答案 0 :(得分:0)
事实证明,可以通过以下方法来加快速度。
def n_inters(s, n):
iterations = [s]
while True:
s = s[::2] + s[1::2]
if s == iterations[0]: break
iterations.append(s)
return iterations[n % len(iterations)]