最长回文子串Python解法
生活随笔
收集整理的這篇文章主要介紹了
最长回文子串Python解法
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
給你一個(gè)字符串?s,找到?s?中最長(zhǎng)的回文子串。
列:
?
# 解析:對(duì)每一個(gè)字符由中心像兩邊判斷,當(dāng)兩邊不相等時(shí)返回最后一次相等時(shí)的下標(biāo)。
class Solution(object):def longestPalindrome(self, s):""":type s: str:rtype: str"""n = len(s) # 原字符串長(zhǎng)度def Palindrome(l, r): # 回文函數(shù)(左下標(biāo),右下標(biāo))while l >= 0 and r < n and s[l] == s[r]: # 當(dāng)左下標(biāo)大于0右下標(biāo)小于n并且左右下標(biāo)所對(duì)應(yīng)的值相等l -= 1 # 左下標(biāo)左移一位r += 1 # 右下標(biāo)右移一位return l+1, r-1 # 當(dāng)不滿足條件時(shí),返回上一次滿足條件的下標(biāo)left, right = 0, 0 # 初始化最后需要返回的最終下標(biāo)值for i in range(n): # 對(duì)每個(gè)字符進(jìn)行遍歷l_1, r_1 = Palindrome(i, i) # 中心對(duì)稱(chēng)回文判斷l(xiāng)_2, r_2 = Palindrome(i, i+1) # 鏡面對(duì)稱(chēng)回文判斷if r_1 - l_1 > right - left: # 找出中心對(duì)稱(chēng)回文最大值left, right = l_1, r_1 # 存儲(chǔ)最大值下標(biāo)if r_2 - l_2 > right - left: # 找出鏡面對(duì)稱(chēng)回文以及兩者最大值left, right = l_2, r_2 # 存儲(chǔ)最大值下標(biāo)return s[left : right +1] # 返回對(duì)應(yīng)下標(biāo)對(duì)應(yīng)的字符子串總結(jié)
以上是生活随笔為你收集整理的最长回文子串Python解法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: OPPO Reno10造型曝光!看前欢声
- 下一篇: 等差数列划分Python解法