5. 最長回文子串-leetCode&python

1勒虾、題目
給你一個字符串 s,找到 s 中最長的回文子串瘸彤。
如果字符串的反序與原始字符串相同修然,則該字符串稱為回文字符串。
示例1:
輸入:s = "babad"
輸出:"bab"
解釋:"aba" 同樣是符合題意的答案质况。

2愕宋、代碼

class Solution(object):
        def longestPalindrome(self,s):
            """
            中心擴散法:以當前字符向兩端擴散,找到最長子串结榄。
            對于給定的字符串中贝,遍歷字符串中的每一個字符或每兩個字符之間的空隙,將其作為回文子串的中心臼朗。
            對于每個可能的中心位置邻寿,從該位置向兩側(cè)擴展蝎土,直到不滿足回文條件為止。這一過程需要維護兩個指針老厌,一個指向當前中心字符的左側(cè)瘟则,另一個指向當前中心字符的右側(cè)。
            在擴展的過程中枝秤,不斷更新當前回文子串的起始和結(jié)束索引,以及當前回文子串的長度慷嗜。
            遍歷所有可能的中心位置淀弹,記錄最長的回文子串的起始和結(jié)束索引,即可得到最長回文子串庆械。
            """
            if len(s) == 0:
                return ""
            sub_str = s[0]

            def aroundCenter(in_s, left, right):
                """
                從給定的左右索引開始薇溃,向兩側(cè)擴展,直到不滿足回文條件為止
                返回最長回文子串的起始和結(jié)束索引
                """
                len_s = len(in_s)
                while (left >= 0) and (right < len_s) and (in_s[left] == in_s[right]):
                    left = left - 1
                    right = right + 1
                return in_s[left + 1:right]

            for i in range(0, len(s)):
                # 以當前字符作為中心向兩側(cè)擴展
                sig1_str = aroundCenter(s, i, i)
                sig2_str = aroundCenter(s, i, i + 1)
                if len(sig1_str) > len(sig2_str):
                    sig_str = sig1_str
                else:
                    sig_str = sig2_str
                if len(sig_str) > len(sub_str):
                    sub_str = sig_str
            return sub_str

3缭乘、測試用例

    s=Solution()
    ts="babad"
    res=s.longestPalindrome(ts)
    print(res)
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末沐序,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子堕绩,更是在濱河造成了極大的恐慌策幼,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奴紧,死亡現(xiàn)場離奇詭異特姐,居然都是意外死亡,警方通過查閱死者的電腦和手機黍氮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門唐含,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人沫浆,你說我怎么就攤上這事捷枯。” “怎么了专执?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵淮捆,是天一觀的道長。 經(jīng)常有香客問我他炊,道長争剿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任痊末,我火速辦了婚禮蚕苇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘凿叠。我一直安慰自己涩笤,他們只是感情好嚼吞,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蹬碧,像睡著了一般舱禽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上恩沽,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天誊稚,我揣著相機與錄音,去河邊找鬼罗心。 笑死里伯,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的渤闷。 我是一名探鬼主播疾瓮,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼飒箭!你這毒婦竟也來了狼电?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤弦蹂,失蹤者是張志新(化名)和其女友劉穎肩碟,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盈匾,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡腾务,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了削饵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岩瘦。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖窿撬,靈堂內(nèi)的尸體忽然破棺而出启昧,到底是詐尸還是另有隱情,我是刑警寧澤劈伴,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布密末,位于F島的核電站,受9級特大地震影響跛璧,放射性物質(zhì)發(fā)生泄漏严里。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一追城、第九天 我趴在偏房一處隱蔽的房頂上張望刹碾。 院中可真熱鬧,春花似錦座柱、人聲如沸迷帜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽戏锹。三九已至冠胯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锦针,已是汗流浹背荠察。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留奈搜,地道東北人割粮。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像媚污,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子廷雅,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容