給乙個字串,求出其中是回文串的子串的最大長度
例如:aaaaaa
6baaaaac
5遍歷每個字元,以他為中心,向兩邊遍歷,時間複雜度o(n2)
可以看到是非常慢的
就比如取個質數p =131
字串 aabbcc
他的雜湊值為
(a-a+1)*p^5+ (a-a+1)*p^4+ (b-a+1)*p^3+ (b-a+1)*p^2+ (c-a+1)*p^1+ (c-a+1)p^0
那麼很顯然,兩個字串雜湊值相等,他們字串不相等的可能性很低很低很低
接著字串
p1 aab
p2 aabc
他們雜湊值的關係是什麼呢?
p2 =p1p+c-a
也就是說我們可以拿雜湊來把字串的字首值和處理得出,同理,字尾和也行
那麼其實就很簡單了
我們求字首和和字尾和的時間複雜度是o(1)
aaabaaa
左右對稱就叫回文
那麼有乙個很顯然的點
假如以字串中乙個點為中心,他的最大對稱半徑為r
那麼r這滿足二分答案的單調性
我們直接判斷字首和和字尾和是否相等即可
時間複雜度o(n*log(n))
回文子串的最大長度 雜湊,二分
題目鏈結 如果乙個字串正著讀和倒著讀是一樣的,則稱它是回文的。給定乙個長度為 n 的字串 s,求他的最長回文子串的長度是多少。輸入將包含最多 30 個測試用例,每個測試用例佔一行,以最多 1000000 個小寫字元的形式給出。輸入以乙個以字串 end 開頭的行表示輸入終止。對於輸入中的每個測試用例,...
leetcode 409 最長回文串 字元雜湊
給定乙個包含大寫字母和小寫字母的字串,找到通過這些字母構造成的最長的回文串。在構造過程中,請注意區分大小寫。比如 aa 不能當做乙個回文字串。注意 假設字串的長度不會超過 1010。示例 1 輸入 abccccdd 輸出 7 解釋 我們可以構造的最長的回文串是 dccaccd 它的長度是 7。回文字...
求字串的最長回文字串
題目描述 現給定乙個已知的字串str,現在想要在o n 的時間複雜度之內求出乙個最長的回文子字串 正著和倒著順序讀一致 演算法總結第三彈 manacher演算法,前面講了兩個字串相演算法 kmp和拓展kmp,這次來還是來總結乙個字串演算法,manacher演算法,我習慣叫他 馬拉車 演算法。相對於前...