SDUTOJ 2784 - Good Luck!
Problem Description
我們都知道,前綴就是一個單詞的前幾個字母(長度小于單詞長度);后綴就是一個單詞的后幾個字母(長度小于單詞長度)。例如:Hello,{H,He,Hel,Hell}都是Hello的前綴,{ello,llo,lo,o}都是Hello的后綴。現(xiàn)在,給你一個字符串String,你的任務(wù)是找出一個字串s,s既是String的前綴,又是String的后綴,并且s也出現(xiàn)在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數(shù)組進(jìn)行處理,讓next數(shù)組整體左移一位。可以得到相同最大前綴和后綴,然后在第二個字符開始,以前綴作為模式串進(jìn)行查找,如果第一個找到的恰好是后綴,即返回的索引為后綴的第一個字符的索引,此時該字符串中間沒有此模式串。
本題中用到的next數(shù)組,其實是下面文章中提到的《最大長度數(shù)組》
文章鏈接
總結(jié)
以上是生活随笔為你收集整理的SDUTOJ 2784 - Good Luck!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java后端真实面试题大全(有详细答案)
- 下一篇: 为什么GEP算法中个体变异的概率要小于预