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"
给定一个字符串 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
全部0条评论
快来发表一下你的评论吧 !