题目:

给你一个字符串 s,找到 s 中最长的 回文子串

示例 1:

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。

示例 2:

输入:s = "cbbd"
输出:"bb"

提示:

  • 1 <= s.length <= 1000

  • s 仅由数字和英文字母组成

思路:

感觉很有趣,记录一下,把字符串反转,再比较

图例:

step 1:

1 | 2 | 3 | 4 | 5

5 | 4 | 3 | 2 | 1

step 2:

1 | 2 | 3 | 4 | 5

5 | 4 | 3 | 2 | 1


1 | 2 | 3 | 4 | 5

5 | 4 | 3 | 2 | 1

step 3:

代码:

class Solution:

    def longestPalindrome(self, s: str) -> str:

        s2 = s[::-1]

        length = len(s)

        for i in range(length):

            le = length - i

            for j in range(i+1):

                # print(j)

                # print(s[j : le + j])

                # print(s2[i - j :  le + i- j])

                if(s[j : le + j] == s2[i - j :  length- j]):

                    return s[j : le + j]

        return None