【部落格】提高階字串

zysssss發表於2024-03-14

雜湊和雜湊表

字首函式&&KMP

字首函式

定義:\(nxt[i]\)\(s[0....i]\)這一子串中最長的相等的前字尾的長度

KMP

例題

1.無線傳輸(luogu4391/ybt1467)

求一個字串的最短週期
結論:

\[ans=n-nxt[n] \]

證明:
image
兩條白線是最長的相等的字首和字尾
可得
\(1=2,2=3,3=4,4=5......\)
所以週期的長度就是1的長度
也就是\(n-nxt[n]\)

2.power strings(ybt1457/poj2406)

求一個字串最多是由多少個相同的子字串重複連線而成的
利用字首函式的性質解決
結論:
如果\(L\)能被\(L-nxt[L]\)整除就滿足題意,個數為除完的結果,否則為1
證明:
合法情況:
image
不合法情況:
image

trie樹

AC自動機