标签:
看之前先看下trie树是怎么构造的
树上的词分别是(从上到下)
{ he , hers , his , she}
按图所示分成3层
看到第三层
是"she"
其中,
①s指向root
②h先找到s的fail指针,发现是0号指针,不是h,
然后h就不高兴了,再问问s的fail指针root:“你有没有儿子和我同名叫h的”
root说:“有,你指向他吧”
然后h就高兴的指向了第一行的h。
③e开始找了,首先问他老爸h:“你的fail指针指着谁”
h说:“图上第一行那个h啊”
然后e就屁颠屁颠地跑去问图上第一行那个h:“你有没有名字和我一样的儿子啊”
图上第一行那个h说:“有,他地址是xxx”
最后e的fail指针就指向xxx地址,也就是第一行那个e了
发现这样,如果一个字符串查到第三行的e以后的字符才不匹配,那说明他前面应该有个‘he’
刚好e的失败指针指向的是第一行的‘he...’的那个e;
这样就不用从h开始再找一遍,而是接着第一行的e继续往后找,从而节省了时间。
标签:
原文地址:http://www.cnblogs.com/crazyacking/p/4659501.html