敏感词有{"hers", "his", "she"} ,然后对于字符串s="ahishers" , 经过敏感词过滤后,变成字符串t=”a“。
如何以O(len(s))的时间复杂度,来实现这个功能呢?
如下图所示:
每个节点都有一个fail指针,i->fail=j, 那么代表着:
word[j]是word[i]的最长后缀。
下图红色线是fail指针,黑色线是前缀树指针,从中就可以知道,游走的算法是可以达到O(n)的。
敏感词有{"hers", "his", "she"} ,然后对于字符串s="ahishers" , 经过敏感词过滤后,变成字符串t=”a“。
如何以O(len(s))的时间复杂度,来实现这个功能呢?
如下图所示:
每个节点都有一个fail指针,i->fail=j, 那么代表着:
word[j]是word[i]的最长后缀。
下图红色线是fail指针,黑色线是前缀树指针,从中就可以知道,游走的算法是可以达到O(n)的。