您的位置:首页 > 其它

leetcode 最长回文子串

2019-06-20 16:12 369 查看

题目:

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

示例 1:

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

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

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

由题目可知回文子串一定从中间开始,两边相等;

任意字符向两边扩展,若是头尾相等,则最长回文子串是子串加上头尾;

若头尾不想等,则是去头的部分的最长回文子串或者去尾的部分的最长回文子串。

[code]def longestPalindrome(self, s: str) -> str:
if not s:
return ''
size=len(s)
start,maxlen=0,0
for i in range(size):
if i-maxlen>=1 and s[i-maxlen-1:i+1]==s[i-maxlen-1:i+1][::-1]:
start=i-maxlen-1
maxlen+=2
continue
if i-maxlen>=0 and s[i-maxlen:i+1]==s[i-maxlen:i+1][::-1]:
start=i-maxlen
maxlen+=1
return s[start:start+maxlen]

参考文献:https://blog.csdn.net/asd136912/article/details/78987624

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: