Задача: Палиндром наибольшей длины в подстроке

Задача: Палиндром наибольшей длины в подстроке

https://t.me/pythonl

Условие: дана строка, необходимо найти в ней палиндром наибольшей длины.

Палиндром - строка, которая одинаково читается как справа-налево, так и слева-направо.


Пример:

Ввод: s = "babad"

Вывод: "bab"

Объяснение: "aba" также является ответом


Ввод: s = "cbbd"

Вывод: "bb"


Решение:

Python

def longestPalindrome(self, s):
    res = ""
    for i in xrange(len(s)):
        # odd case, like "aba"
        tmp = self.helper(s, i, i)
        if len(tmp) > len(res):
            res = tmp
        # even case, like "abba"
        tmp = self.helper(s, i, i+1)
        if len(tmp) > len(res):
            res = tmp
    return res
 
# get the longest palindrome, l, r are the middle indexes   
# from inner to outer
def helper(self, s, l, r):
    while l >= 0 and r < len(s) and s[l] == s[r]:
        l -= 1; r += 1
    return s[l+1:r]




Report Page