Longest Palindromic Substring

描述

Description:

Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

Example 1:

Input: "babad"
Output: "bab"
Note: "aba" is also a valid answer.

Example 2:

Input: "cbbd"
Output: "bb"

5. 最长回文子串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1:

输入: "babad"

输出: "bab"

注意: "aba" 也是一个有效答案。

示例 2:

输入: "cbbd"

输出: "bb"

今天遇到最长回文这道题,说实话对我来说是有点难度,攻了两次才攻下来,个人觉得很有纪念意义,写下来记录一下。

Solution1: Greedy方法

回文字符串, 是正读反读都一样的字符串。比较直接的方法是在每个字符位置上向前和向后搜索找到回文字符串。其中,对于搜索时需要对奇数位和偶数位两种形式进行探索,奇数位以当前位置的字符为中心;偶数位以当前位置和其相邻一个位置的两个字符为中心向两边拓展。

class Solution:
    def check_Palindrome(self,s,left,right):
        res =''
        while(left>=0 and right <len(s) and s[left] == s[right]):
            if len(res) < len(s[left:right+1]):
                res = s[left:right+1]
            left -= 1
            right += 1
        return res

    def longestPalindrome(self, s: str) -> str:
        l =len(s)
        res = ''
        for i in range(l):
            left = self.check_Palindrome(s,i,i)
            right = self.check_Palindrome(s,i,i+1)
            maxStr = None
            if(len(left)>len(right)):
                maxStr = left
            else:
                maxStr = right

            if(len(maxStr) > len(res)):
                res = maxStr
        return res
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分