Мне было интересно, какой вид O это код, может ли кто-нибудь помочь мне разобраться? Я написал это, но когда меня допрашивали, о какой O-нотации, и единственное, что я могу сказать, было линейным, но у меня такое ощущение, что рекурсия + итерация должна быть экспоненциальной?Найти самый большой палиндром в любой заданной строке, используя python (примечание большой O)
listPlindromes = []
def palindrome(givenString, n):
if n == 1:
#print givenString
return None
else:
#print givenString[:n]
#print ('forward: '+givenString[:n] +' backwards: '+givenString[:n][::-1])
#Get difference between lengths
lenDifference = len(givenString) - len(givenString[:n])
#If there is a difference means there at least one more word/palindrome could exist
#therefore it need to be tested
if lenDifference > 0:
for xTest in range(0,lenDifference-1) :
newWord=givenString[xTest:n+xTest]
if newWord == newWord[::-1]:
if len(newWord) > 0:
listPlindromes.append(newWord)
#print newWord
else:
if givenString[:n] == givenString[:n][::-1]:
listPlindromes.append(givenString[:n])
#print('palindrome: '+givenString)
return palindrome(givenString,n-1)
givenString='osooso'
palindrome(givenString, len(givenString))
print(listPlindromes)