字典树(数组 查找前缀)
Posted ww123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字典树(数组 查找前缀)相关的知识,希望对你有一定的参考价值。
int trie[400001][26],len,root,tot,sum[400001]; bool p; int n,m; char s[11]; void insert() { len=strlen(s); root=0; for(int i=0;i<len;i++) { int id=s[i]-‘a‘; if(!trie[root][id]) trie[root][id]=++tot; sum[trie[root][id]]++;//前缀后移一个位置保存 root=trie[root][id]; } } int search() { root=0; len=strlen(s); for(int i=0;i<len;i++) { int id=s[i]-‘a‘; if(!trie[root][id]) return 0; root=trie[root][id]; }//root经过此循环后变成前缀最后一个字母所在位置的后一个位置 return sum[root];//因为前缀后移了一个保存,所以此时的sum[root]就是要求的前缀出现的次数 }
以上是关于字典树(数组 查找前缀)的主要内容,如果未能解决你的问题,请参考以下文章
HDU 1247 Hat’s Words (字典树 && map)