我已经写了不同的Python代码来反转给定字符串。但是,无法确定哪一个算法更有效。有人能够通过时间和空间复杂度指出这些算法之间的差异吗?
def reverse_1(s):
result = ""
for i in s :
result = i + result
return result
def reverse_2(s):
return s[::-1]
虽然已经有一些解决方案,但我无法找到时间和空间复杂度。 我想知道s [::-1]
需要多少空间?
reverse_1
是你可能编写的最糟糕的反转程序,其复杂度为O(n*2)
。请使用第二个复杂度为O(n)
且不使用循环的程序。 - Jean-François Fabretimeit reverse_1('blabla')
。 - Lorran Sutterreverse_1
更糟糕:它是O(n*n)
。如果在一个非常大的字符串上尝试,它永远不会结束,因为它必须复制该字符串。所以基本上是n*(n-1)//2
次复制。 - Jean-François Fabre