看之前先看下trie樹是怎麼構造的
樹上的詞分別是(從上到下)
{ he , hers , his , she}
按圖所示分成3層
看到第三層
是"she"
其中,
①s指向root
②h先找到s的fail指針,發現是,不是h,
然後h就不高興了,再問問s的fail指針root:“你有沒有兒子是叫h的”
root說:“有,你指向他吧”
然後h就滿足了
③e開始找了,首先問他老爸h:“你的fail指針指着誰”
h說:“圖上第一行那個h啊”
然後e就屁顛屁顛地跑去問圖上第一行那個h:“你有沒有名字和我一樣的兒子啊”
圖上第一行那個h說:“有,他地址是xxx”
最後e的fail指針就指向xxx地址,也就是第一行那個e了
發現這樣,如果一個字符串查到第三行的e纔不匹配,那說明他前面應該有個‘he’
剛好e的失敗指針指向的是第一行的‘he...’的那個e;
這樣就不用從h開始再找一遍啦