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

题目:

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

示例 1:

输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:

输入: "cbbd"
输出: "bb"

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring


代码:

class Solution:
    def longestPalindrome(self, s: str) -> str:
        #输入为空时,返回空字符        
        len_str=len(s)
        if len_str==0:
            return ''
        #输入的字符长度为1时,返回输入的字符串本身
        if len_str==1:
            return s[0]
        #分情况讨论,即分为回文子序列长度为奇数和偶数两种情况
        longest_len_odd=[]
        longest_str_odd=[]
        longest_len_even=[]
        longest_str_even=[]
        #第一种情况,假设回文子序列的长度为偶数时,寻找所有满足条件的回文子序列及子序列长度值
        for i in range(len_str):
            left=i
            right=i
            while left>=0 and right                 left=left-1
                right=right+1
            longest_len_odd.append(right-left-1)
            longest_str_odd.append(s[left+1:right]) 
         #第二种情况,假设回文子序列的长度为奇数时,寻找所有满足条件的回文子序列及子序列长度值   
        for i in range(len_str):
            left=i
            right=i+1
            while left>=0 and right                 left=left-1
                right=right+1
            longest_len_even.append(right-left-1)
            longest_str_even.append(s[left+1:right]) 
        #返回上述得到的长度为奇数和偶数的回文子序列中最长序列长度对应的回文子序列字符串
        if max(longest_len_even)>=max(longest_len_odd):
            return longest_str_even[longest_len_even.index(max(longest_len_even))]
        else:
            return longest_str_odd[longest_len_odd.index(max(longest_len_odd))]
 

你可能感兴趣的:(Python3 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。)