最长回文子串Python解法
生活随笔
收集整理的這篇文章主要介紹了
最长回文子串Python解法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給你一個字符串?s,找到?s?中最長的回文子串。
列:
?
# 解析:對每一個字符由中心像兩邊判斷,當兩邊不相等時返回最后一次相等時的下標。
class Solution(object):def longestPalindrome(self, s):""":type s: str:rtype: str"""n = len(s) # 原字符串長度def Palindrome(l, r): # 回文函數(左下標,右下標)while l >= 0 and r < n and s[l] == s[r]: # 當左下標大于0右下標小于n并且左右下標所對應的值相等l -= 1 # 左下標左移一位r += 1 # 右下標右移一位return l+1, r-1 # 當不滿足條件時,返回上一次滿足條件的下標left, right = 0, 0 # 初始化最后需要返回的最終下標值for i in range(n): # 對每個字符進行遍歷l_1, r_1 = Palindrome(i, i) # 中心對稱回文判斷l_2, r_2 = Palindrome(i, i+1) # 鏡面對稱回文判斷if r_1 - l_1 > right - left: # 找出中心對稱回文最大值left, right = l_1, r_1 # 存儲最大值下標if r_2 - l_2 > right - left: # 找出鏡面對稱回文以及兩者最大值left, right = l_2, r_2 # 存儲最大值下標return s[left : right +1] # 返回對應下標對應的字符子串總結
以上是生活随笔為你收集整理的最长回文子串Python解法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OPPO Reno10造型曝光!看前欢声
- 下一篇: 破产边缘疯狂试探 维珍轨道再延长暂停运营