1
def is_palindrome(s):
if len(s) <= 1:
return True
return s[0] == s[-1] and is_palindrome(s[1:-1])
我的第一个想法是复杂度是O(n),因为每个递归调用删除2个字符。回文测试的复杂性
但后来我想到了切片的复杂性。根据https://wiki.python.org/moin/TimeComplexity,获得切片的复杂度为O(k),其中k =切片中元素的数量。在is_palindrome
中,k = n-2,那么k = n-4,然后是n-6等等,所以我认为复杂度是O(n^2),因为每个调用都有一个(最坏的情况下)O(n)slice有n个电话。
哪一个是正确的?
你的最后一笔是'为O(n^2)','不为O(n)'。 – arshajii
你是说O(n^2)吗?谢谢! –
@arshajii - 谢谢 - 对我来说这没有任何意义。 –