【发布时间】:2022-07-26 22:13:30
【问题描述】:
这是 Python 中一个相当直接的编程问题,我正在寻找进一步优化的建议。除了非常大的字符串外,我正在及时成功处理。我不是在寻找代码,而是我应该研究优化改进的领域。我已经确定我可以跳过偶数减少循环操作,并且考虑到操作的性质,模式最终会重复,这就是为什么我会在重复发生时进行跟踪。如果 n > 重复,这允许我突破。如果将字符串转换为列表是最有效的,我不肯定。
问题:
我们有一个字符串 s 和一个数字 n,表示函数运行的次数。这是一个获取字符串的函数,将偶数索引字符连接到前面,将奇数索引字符连接到后面。您执行此操作 n 次。
例子:
s = "qwertyuio" 且 n = 2 的示例: 经过 1 次迭代 s = "qetuowryi" 经过 2 次迭代 s = "qtorieuwy" 返回“qtorieuwy”
def jumbled_string(s, n):
sl = list(s)
repeat = 0
for y in range(0,n):
for i in range(1, (len(sl)//2)+1):
sl.append(sl.pop(i))
if repeat == 0 and ''.join(sl) == s:
repeat = y+1
break
if repeat != 0:
afterrepeat = n%repeat
for y in range(0,afterrepeat):
for i in range(1, (len(sl)//2)+1):
sl.append(sl.pop(i))
return ''.join(sl)
【问题讨论】:
-
号码
n有什么作用? -
输入和预期输出的一个或多个示例也会有所帮助。
-
@trincot:我正要问同样的问题。
n在问题中做了什么? -
看来
n只是重复了操作。所以s = 'abcdefghijklmn'; for _ in range(3): s = s[::2] + s[1::2]给出的结果与 OP 的函数相同(即jumbled_string(s, 3)=>'aidlgbjemhckfn')。 -
我投票结束这个问题,因为关于改进工作代码的问题更适合Code Review,但请记得先查看他们的on-topic 页面
标签: python optimization