經典字串題 最長回文子字串 Leetcode #5 Longest Palindromic Substring

閱讀時間約 4 分鐘
raw-image

這題的題目在這裡

題目會給定一個字串,問我們裡面最大的回文子字串內容為何?


測試範例:

Example 1:

Input: s = "babad"
Output: "bab"
Explanation: "aba" is also a valid answer.

Example 2:

Input: s = "cbbd"
Output: "bb"

約束條件:

Constraints:

  • 1 <= s.length <= 1000
  • s consist of only digits and English letters.

演算法:

逐一從左到右,掃描每個字元。

以每個字元當作中心,向兩側擴展,擴展的同時,檢查是否滿足回文字串的特性,頭尾相等。

每一輪擴展完,更新並且記錄,最長的回文子字串。


程式碼:

class Solution:
 def longestPalindrome(self, s):


  # get the longest palindrome, from left to right inclusively
  # index grows from center to outer
  def central_expansion_from(self, left, right):
   
   while left >= 0 and right < len(s) and s[left] == s[right]:
    left, right = left-1, right+1
    
   return s[left+1:right] 

  
  longest_palindrome = ""
  
  #scan each possible i as center index
  for i in range(len(s)):
   
   # Odd length, central expansion pattern: "s" -> "asa"
   odd_len_palindrome = central_expansion_from(s, i, i)

   if len(odd_len_palindrome) > len(longest_palindrome):
    longest_palindrome = odd_len_palindrome
    
 
   # Even length, central expansion pattern: "s" -> "assa"
   even_len_palindrome = central_expansion_from(s, i, i+1)
   
if len(even_len_palindrome) > len(longest_palindrome):
    longest_palindrome = even_len_palindrome
    
  return longest_palindrome

要注意的部分就是,下標的部分要處理好,最後在central_expansion_from

function裡面,合法的回文子字串是s[left+1:right]


時間複雜度: O( n² )

外層for loop 掃描花費O(n), 內層回文字串比較while loop再花費O( n )

空間複雜度: O( n )

紀錄回文子字串,最長可能長度為O( n )


Reference:

[1] Python O(n²) by center expansion [w/ Comment] — Longest Palindromic Substring — LeetCode

81會員
417Content count
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
這題乍看之下是新題目,但仔細一想, 其實只是前面介紹過的費式數列的小變形而已,解題思想基本不變。 題目說每次可以爬一階樓梯或兩階樓梯,問爬到n階的方法數是多少。
題目會給我們一個排序好的矩陣matrix ,和一個目標值 target 要求我們在矩陣中尋找target,如果存在,返回True。 如果target 不存在,返回False 題目要求必須在O( log (m*n) )對數時間內完成 。
題目會給我們一個排序好的陣列,還有一個目標值target 要求我們在陣列中尋找target所在的索引位置。 如果target 不存在,返回-1 題目要求必須在O( log n )對數時間內完成 。
題目會給我們一個輸入陣列candidates,和一個目標值 target 問我們,從canditdates裡面重複挑選,可以湊出總和為target目標值的組合數有幾種? 在此,我們將使用找零錢II的DP模型和化簡的技巧來解題。
在經過比較簡單的入門題(Coin Change)之後, 來看進階一點的DP題目Coin Change II 整零錢的全部方法數。 不免俗,再次強調DP的解題框架,鞏固知識點。
深入淺出,從最基本的 費式數列, 一探動態規劃的奧秘與精隨。
這題乍看之下是新題目,但仔細一想, 其實只是前面介紹過的費式數列的小變形而已,解題思想基本不變。 題目說每次可以爬一階樓梯或兩階樓梯,問爬到n階的方法數是多少。
題目會給我們一個排序好的矩陣matrix ,和一個目標值 target 要求我們在矩陣中尋找target,如果存在,返回True。 如果target 不存在,返回False 題目要求必須在O( log (m*n) )對數時間內完成 。
題目會給我們一個排序好的陣列,還有一個目標值target 要求我們在陣列中尋找target所在的索引位置。 如果target 不存在,返回-1 題目要求必須在O( log n )對數時間內完成 。
題目會給我們一個輸入陣列candidates,和一個目標值 target 問我們,從canditdates裡面重複挑選,可以湊出總和為target目標值的組合數有幾種? 在此,我們將使用找零錢II的DP模型和化簡的技巧來解題。
在經過比較簡單的入門題(Coin Change)之後, 來看進階一點的DP題目Coin Change II 整零錢的全部方法數。 不免俗,再次強調DP的解題框架,鞏固知識點。
深入淺出,從最基本的 費式數列, 一探動態規劃的奧秘與精隨。
你可能也想看
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
在家找到多年前姪女送我的日文版《經典日劇主題曲》雙CD,只看過少部分劇集,其他是只聞其名,或看過幾集,不是人家不好,因自己從小是廣播迷,接近21世紀才開始在網絡串流平台實時追劇,算是追不上潮流的老古董。
Thumbnail
我在天下學習新合作一個專欄,首篇文章上架,從解決問題的思維,帶入經典賽的心得。 經典賽》讓台灣不再「雖敗猶榮」!找出問題前,先學會解題思維 https://www.cwlearning.com.tw/posts/a08dce8e-f646-43cc-910c-a5f116d5e74c
Thumbnail
在987剛開始喝調酒時,因為久仰這款調酒在歐美的高人氣,就點了這杯具代表性的經典,喝下去第一口馬上眉頭皺起來...這也太苦了吧🥲八天德:這就是人生的味道阿(笑)。 尼格羅尼是由琴酒當基底,甜香艾酒(Sweet Vermouth )賦予藥草與果香的香甜味、再由金巴利(Campari)帶出藥草的苦味
Thumbnail
今天前往鐵男學長(陳峻賢老師)的讀書會, 在開場時陳老師提出了「企業經營與人生經營的連結」, 如果你是企業經營的人可以深入了解創辦人的企業治理, 而這樣的企業治理的許多思維可以幫助到我們的人生, 讓我印象深刻的是創辦人必要特質, 首先,情緒穩定,在企業治理當中,老闆不管面對什麼情境, 都要有著情緒的
Thumbnail
這杯以茶聞名的調酒大概是想喝醉的人最常點的了😜 混和了大量的烈酒,伏特加、琴酒、蘭姆酒、龍舌蘭酒、橙皮酒(Triple sec)各一份,再加上半分的檸檬汁以及適量的可樂,可樂的香甜跟檸檬的酸讓酒感很完美的被隱藏起來,同時也讓這杯酒有了"茶"色,但喝完一杯可等於喝了5個shot,想醉真的一杯就夠~
Thumbnail
<p>財經媒體經常充斥著專家學者講的一些正確無誤,但不實用的廢話。哪一句最不負責任?哪一句最敷衍?哪一句最沒有內容?哪一句最害人?哪一句最考驗人性?在這一一列舉給大家。</p>
Thumbnail
<p>《權力遊戲》本季的女主角除了本來就是老魔頭的瑟曦以外,演技都有了明顯的成長,也許珊莎的火鳳凰還有丹妮莉絲的第三代莎拉康納都是不錯的磨練,讓最後女王的對決更有看頭!</p>
Thumbnail
<p>對我來說,《越獄風雲》是一個時代的象徵,它和《Lost檔案》與《24小時反恐任務》是千禧年初期最轟動的作品。它打破了那種單元長壽劇的破案件模式,令人興奮無比的題材:自願入獄再逃獄,還有什麼比這更霸氣的行動呢?</p>
Thumbnail
<p>這段故事有趣的是,其中一幕導演用正邪兩半邊Will的臉,慢慢融合,象徵Will內心實際上確實存在著兩種人格的掙扎,且沒有人知道他最終的選擇為何,有可能釣魚戰術成功,也有讓Will完全被Hannibal收服的風險。 </p>
Thumbnail
<p>Hannibal同樣具有所有天才角色具備的特質:喜好挑戰。不論他留下多少證據,那也都是為了給予錯誤引導。也喜歡在犯案之後,以無辜的身份詢問FBI的調查狀況,並暗自享受勝利的滋味。</p>
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
在家找到多年前姪女送我的日文版《經典日劇主題曲》雙CD,只看過少部分劇集,其他是只聞其名,或看過幾集,不是人家不好,因自己從小是廣播迷,接近21世紀才開始在網絡串流平台實時追劇,算是追不上潮流的老古董。
Thumbnail
我在天下學習新合作一個專欄,首篇文章上架,從解決問題的思維,帶入經典賽的心得。 經典賽》讓台灣不再「雖敗猶榮」!找出問題前,先學會解題思維 https://www.cwlearning.com.tw/posts/a08dce8e-f646-43cc-910c-a5f116d5e74c
Thumbnail
在987剛開始喝調酒時,因為久仰這款調酒在歐美的高人氣,就點了這杯具代表性的經典,喝下去第一口馬上眉頭皺起來...這也太苦了吧🥲八天德:這就是人生的味道阿(笑)。 尼格羅尼是由琴酒當基底,甜香艾酒(Sweet Vermouth )賦予藥草與果香的香甜味、再由金巴利(Campari)帶出藥草的苦味
Thumbnail
今天前往鐵男學長(陳峻賢老師)的讀書會, 在開場時陳老師提出了「企業經營與人生經營的連結」, 如果你是企業經營的人可以深入了解創辦人的企業治理, 而這樣的企業治理的許多思維可以幫助到我們的人生, 讓我印象深刻的是創辦人必要特質, 首先,情緒穩定,在企業治理當中,老闆不管面對什麼情境, 都要有著情緒的
Thumbnail
這杯以茶聞名的調酒大概是想喝醉的人最常點的了😜 混和了大量的烈酒,伏特加、琴酒、蘭姆酒、龍舌蘭酒、橙皮酒(Triple sec)各一份,再加上半分的檸檬汁以及適量的可樂,可樂的香甜跟檸檬的酸讓酒感很完美的被隱藏起來,同時也讓這杯酒有了"茶"色,但喝完一杯可等於喝了5個shot,想醉真的一杯就夠~
Thumbnail
<p>財經媒體經常充斥著專家學者講的一些正確無誤,但不實用的廢話。哪一句最不負責任?哪一句最敷衍?哪一句最沒有內容?哪一句最害人?哪一句最考驗人性?在這一一列舉給大家。</p>
Thumbnail
<p>《權力遊戲》本季的女主角除了本來就是老魔頭的瑟曦以外,演技都有了明顯的成長,也許珊莎的火鳳凰還有丹妮莉絲的第三代莎拉康納都是不錯的磨練,讓最後女王的對決更有看頭!</p>
Thumbnail
<p>對我來說,《越獄風雲》是一個時代的象徵,它和《Lost檔案》與《24小時反恐任務》是千禧年初期最轟動的作品。它打破了那種單元長壽劇的破案件模式,令人興奮無比的題材:自願入獄再逃獄,還有什麼比這更霸氣的行動呢?</p>
Thumbnail
<p>這段故事有趣的是,其中一幕導演用正邪兩半邊Will的臉,慢慢融合,象徵Will內心實際上確實存在著兩種人格的掙扎,且沒有人知道他最終的選擇為何,有可能釣魚戰術成功,也有讓Will完全被Hannibal收服的風險。 </p>
Thumbnail
<p>Hannibal同樣具有所有天才角色具備的特質:喜好挑戰。不論他留下多少證據,那也都是為了給予錯誤引導。也喜歡在犯案之後,以無辜的身份詢問FBI的調查狀況,並暗自享受勝利的滋味。</p>