SDUTOJ 2784 - Good Luck!
生活随笔
收集整理的這篇文章主要介紹了
SDUTOJ 2784 - Good Luck!
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Problem Description
我們都知道,前綴就是一個單詞的前幾個字母(長度小于單詞長度);后綴就是一個單詞的后幾個字母(長度小于單詞長度)。例如:Hello,{H,He,Hel,Hell}都是Hello的前綴,{ello,llo,lo,o}都是Hello的后綴。現在,給你一個字符串String,你的任務是找出一個字串s,s既是String的前綴,又是String的后綴,并且s也出現在String的中間部分(既不是前綴,也不是后綴),s的長度越長越好。
Input
輸入一個N,接下來N行,每行一個字符串String,String長度len( 1 <= len <= 1000000)。
Output
輸出只有一行,如果有符合條件的s,輸出長度最長的s,如果沒有,輸出“Bad Luck!”(不含引號)。
Sample Input
3
abcabcabcabcabc
papapapap
aaabaaaabab
Sample Output
abcabcabc
papap
Bad Luck!
Hint
Source
GLSilence
思路:
對KMP算法中的next數組進行處理,讓next數組整體左移一位。可以得到相同最大前綴和后綴,然后在第二個字符開始,以前綴作為模式串進行查找,如果第一個找到的恰好是后綴,即返回的索引為后綴的第一個字符的索引,此時該字符串中間沒有此模式串。
本題中用到的next數組,其實是下面文章中提到的《最大長度數組》
文章鏈接
總結
以上是生活随笔為你收集整理的SDUTOJ 2784 - Good Luck!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java后端真实面试题大全(有详细答案)
- 下一篇: 为什么GEP算法中个体变异的概率要小于预