Detection of Extraterrestrial KMP匹配 重复k次子串 好题
生活随笔
收集整理的這篇文章主要介紹了
Detection of Extraterrestrial KMP匹配 重复k次子串 好题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一開始以為這道題是后綴數組,想了好久沒想明白怎么做,后來發現暴力枚舉起點,進行KMP就好了。
枚舉起點以后,構建fail數組。
遍歷fail數組,如果串s[l,r]是由串s[s,t]重復k次得到的,那么fail數組的樣子一定如下
index: [l] [l+1] [l+2] ....[t] [t+1] [t+2]....[r]
? ? fail: [0] [*]? ?[*]? ? ?...[*] [1] [2] [3] ....[r-t]
并且(r-l+1)一定是(t-s+1)的倍數。
len = r-l+1
如果len > ans[k],記把ans數組k的位置更新成len。
這樣的話我們在輸出答案的時候,要輸出重復t次的最長串長度,那么答案一定是ans[t],ans[2t]...ans[kt]里面的最大值
因為重復2t次也可以看作是重復t次,相鄰的2個合成1個來看。
時間復雜度
O(n*n+n+nlogn)=O(n2)
總結
以上是生活随笔為你收集整理的Detection of Extraterrestrial KMP匹配 重复k次子串 好题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浦发银行网银开通 具体方法和步骤总结
- 下一篇: Juice Extractor dp