mannachar(马拉车)求最长回文子串
生活随笔
收集整理的這篇文章主要介紹了
mannachar(马拉车)求最长回文子串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
mannachar(馬拉車)究竟是什么東西呢?
很簡單,就是能讓你在O(n)的復雜度內求出一個串的最長回文子串。傳統的算法復雜度是O(n^2),吶,為什么mannachar能變快呢?因為mannachar用到了算過的東西來進行優化。腦補一下,當你發現了一個回文串,那么是不是左右就對稱了呢?然后左邊的最長回文子串是已經求過了,所以右邊對應的點的最長回文子串至少也有那么多。
先貼一波代碼
它的復雜度是O(n)的,為什么呢?請看我的代碼中的maxx這個變量表示現在最長回文子串的右邊界的最遠值,最多移動n次,復雜度就證好啦
其實mannachar并不難,不過說實話用的場合不是很多,所以嘛,學一下,掌握一下就好啦,再去學字符串的其它算法組合一下就能做出一些題啦
總結
以上是生活随笔為你收集整理的mannachar(马拉车)求最长回文子串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++输入、输出优化模板整理
- 下一篇: 参加浙江中医药大学第十一届程序设计竞赛(