Один из способов сделать это - сохранить список. Однако этот список будет хранить только 1 строку в любой момент времени. Поэтому каждый раз, когда вы вызываете find_palindrome_substr()
, вы проверяете, является ли вновь созданная строка длиннее, чем строка, которая уже существует в списке. Если это так, замените строку в списке новой. За исключением первого вызова, когда список пуст, вы добавляете к нему слово безоговорочно. Код будет выглядеть примерно так:
def find_palindrome_substr(string, left, right, palinList):
while left >= 0 and right <len(string):
if string[left] != string[right]:
break
thisPalin = string[left: right + 1]
if(len(palinList) == 0):
palinList.append(thisPalin)
else:
if(len(palinList[0]) < len(thisPalin)):
palinList.pop()
palinList.append(thisPalin)
left -=1 #expand to left
right +=1 #expand to right
def find_all_palin(string):
palinList = []
for i in range(0, len(string)):
find_palindrome_substr(string, i-1, i+1, palinList)
find_palindrome_substr(string, i, i+1, palinList)
return palinList[0]
print(find_all_palin("aabbbaa"))
Вывод:
aabbbaa