У меня две версии. Интересно ваше мнение. )) Нормально написана или нет?
Ищет самый длинный палиндром-подстроку (одинаково читающуюся в обоих направлениях) в строке/тексте.
Возвращает положение этого палиндрома в заданном тексте
1)
def subpalindr(text):
try:
l=len(text)
text=text.lower()
reversed_text=text[::-1]
result=[]
for i in range(l):
result+=[(i,j+1) for j in range(i+2,l) if text[i:j+1] in reversed_text]
return max(result,key=lambda a: a[1]-a[0])
except:
return(0,0)
2)
def subpalindr(text):
try:
l=len(text)
text=text.lower()
reversed_text=text[::-1]
result=[]
i=0
while i<=l-3:
j=i+3
while text[i:j] in reversed_text and j<=l:
j+=1
result+=[(i,j-1)]
i=j-1
return max(result,key=lambda a: a[1]-a[0]) if len(result)>1 else result[0]
except:
return(0,0)
Перемещено leave из general