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

分析:#以每一个字符串为中心找最大回文字符串, #这里会分为两种情况,一种回文字符串中的字符个数是奇数,如aba,此时需要以s[i]为基准,开始同时向前后移动,比较s[i-1]和s[i+1] #另一种情况是回文字符串中的字符个数是偶数,即s[i]和是s[i+1]相同,这时候就要比较s[i-1]和s[i+2]

class Solution:
    def longestPalindrome(self, s: str) -> str:   
        n = len(s)
        if n<=1:
            return s
        result = ""
        max_length = 0

        for i in range(n-1):
            #以每一个字符串为中心找最大回文字符串,
            #这里会分为两种情况,一种回文字符串中的字符个数是奇数,如aba,此时需要以s[i]为基准,开始同时向前后移动,比较s[i-1]和s[i+1]
            #另一种情况是回文字符串中的字符个数是偶数,即s[i]和是s[i+1]相同,这时候就要比较s[i-1]和s[i+2]

            left,right = i,i
            while left>=0 and right<n and s[left]==s[right]:
                if right-left+1>max_length:
                    max_length = right-left+1
                    result = s[left:right+1]
                left-=1
                right+=1
            if s[i]==s[i+1]:
                left,right = i,i+1
                while left>=0 and right<n and s[left]==s[right]:
                    if right-left+1>max_length:
                        max_length = right-left+1
                        result = s[left:right+1]
                    left-=1
                    right+=1
        return result