Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example 1:
Example 2:
Related Topics: Dynamic Programming
、String
這題是計算最長回文子字串。
其實這種題目我最愛暴力法,因為最直覺 XDDDD。
以這題來說,每次把一個字元當作回文的中心,並找到已該字元為中心的最長回文子字串,直到所有字元為中心的回文都被找完後,從中找出最長的結果回傳。
但這樣做,不僅時間複雜度高,且在實做還必須分奇偶長度的回文進行討論,有夠麻煩的。
後來找到一篇關於最長回文子串的討論,裡面提到不少針對這個問題的演算法與分析,其中有一個被暱稱為馬拉車演算法的 Manacher's algorithm,這個方法可以將時間複雜度降到線性,討論中不少人推崇這是計算最長回文子串的最理想方法。
關於馬拉車 Manacher 演算法的介紹可以看看這篇,實做這題時我也是基於這篇的。
實做步驟如下:
本文作者: 辛西亞.Cynthia
本文連結: 辛西亞的技能樹 / hackmd 版本
版權聲明: 部落格中所有文章,均採用 姓名標示-非商業性-相同方式分享 4.0 國際 (CC BY-NC-SA 4.0) 許可協議。轉載請標明作者、連結與出處!