题目:
链接:https://leetcode-cn.com/problems/longest-palindromic-substring/
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例1
输入: “babad”
输出: “bab”
注意: “aba” 也是一个有效答案。
示例2
输入: “cbbd”
输出: “bb”
示例3
输入:nums1 = [0,0], nums2 = [0,0]
输出:0.00000
代码:
class Solution:
def longestPalindrome(self, s: str) -> str:
for i in range(len(s))[::-1]:
for start in range(0,len(s)-i):
str1 = s[start:start+i+1]
str2 = str1[::-1] #翻转
if str1==str2:
return str1
if i==0:
return s[i]
emmmmm效率不是很高,找到了一个大神的代码,只进行了一次遍历
class Solution:
def longestPalindrome(self, s: str) -> str:
if not s: return ""
length = len(s)
if length == 1 or s == s[::-1]: return s
max_len,start = 1,0
for i in range(1, length):
even = s[i-max_len:i+1]
odd = s[i-max_len-1:i+1]
if i - max_len - 1 >= 0 and odd == odd[::-1]:
start = i - max_len - 1
max_len += 2
continue
if i - max_len >= 0 and even == even[::-1]:
start = i - max_len
max_len += 1
continue
return s[start:start + max_len]
作者:skay2002
链接:https://leetcode-cn.com/problems/longest-palindromic-substring/solution/pythonshuang-bai-50msyi-lun-bian-li-fa-5-zui-chang/
来源:力扣(LeetCode)