cstring判断是否包含子串_最长回文子串

74395c7bac21934efc957db70b36a039.png

###判断是否为回文串可以用s==s[::-1]的方法

思路:长度递减,如果长度为max_length的子串中没有回文串,则查找长度为max_length-1的子串是否为回文串,如果查找到了直接返回,因为长度是递减的,所以第一个查找到的一定是最长的回文串。如果没有查找到,长度不断减小,直接减小到长度为1为止。

class Solution:
    def longestPalindrome(self, s: str) -> str:
        if len(s)<=1 or s==s[::-1] :
            return s
        if len(s)==len(set(s)):
            return s[0]
        max_length = len(s)-1
        for length in range(len(s)-1,1,-1):
            for i in range(len(s)-length+1):
                if s[i:i+length] == s[i:i+length][::-1]:
                    return s[i:i+length]
        return s[0]