gpt4 book ai didi

python - 不使用python内置方法即可反转字符串的算法

转载 作者:太空狗 更新时间:2023-10-30 02:51:10 25 4
gpt4 key购买 nike

在不使用内置函数的情况下,我试图编写一个算法来使用列表反转字符串,例如,

foo

致:
oof

尝试
import re
string = "alice"
string = re.findall('.',string)
length = len(string)
for x in range(1,int(length/2)+1):
first = string[x-1]
last = string[length-x]
string[x-1]=last
string[length-x]=first

string = "".join(string)
print(string)

考虑到时间/空间的复杂性(使用列表或不使用列表都可以),哪种方法更有效地反转字符串?

最佳答案

您在这里对regex的依赖是不必要的,re.findall('.',string)可以重写为list(string)。您需要将int(length/2)+1替换为length // 2,或len(string) // 2(您不需要额外的变量),因为前者将失败,字符串长度为偶数(它运行一个额外的迭代,而取消前一个迭代的交换)。
交换代码是不必要的冗长,因为您可以使用x, y = y, x来交换两个变量,这意味着您可以只做string[i], string[-i-1] = string[-i-1], string[i]

>>> string = list('alice')
>>> for i in range(len(string) // 2):
... string[i], string[-i-1] = string[-i-1], string[i]
...
>>> string
['e', 'c', 'i', 'l', 'a']

这是O(n/2)或O(n)的复杂性。
注意,当您意识到 string[::-1]用一个简洁的表达式完成了所有这些时,这一切都是没有意义的。

关于python - 不使用python内置方法即可反转字符串的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56814836/

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