1. 程式人生 > >9.30 Manacher演算法

9.30 Manacher演算法

題目】:

  給定一個字串str,返回str中最長迴文子串的長度

  舉例:

    str="123",其中的最長迴文子串為"1","2"或者"3",所以返回1

    str="abc1234321ab",其中的最長迴文子串為"1234321",所以返回7

 

進階題目】:

  給定一個字串str,想通過新增字元的方式使得str整體都變成迴文字串,但要求只能在str的末尾新增字元,請返回在str後面新增的最短字串

  舉例:

    str="12",在末尾新增"1"之後,str變為"121",是迴文串,在末尾新增"21"之後,str變為"1221",也是迴文串,但"1"是所有新增方案中最短的,所以返回"1"

 

要求】:

  如果str的長度為N,解決原問題和進階問題的時間複雜度都達到O(N)

 

題目來源:左程雲老師《程式設計師程式碼面試指南》