ac自动机查找(未全)
时间:2024-05-05 15:48
作者:admin
点击:次
void findt(string s){ trie *j,*f=root; for(int i=0;is.size();i++){ //根据上一个i在trie的位置f,找当前i while(f!=rootf-m.count(s[i])==0) f=f-fail; //如果没找到,从root开始找 if(f-m.count(s[i])==0) f=root; else{ //找到了
void findt(string s){
trie *j,*f=root;
for(int i=0;i<s.size();i++){
//根据上一个i在trie的位置f,找当前i
while(f!=root&&f->m.count(s[i])==0) f=f->fail;
//如果没找到,从root开始找
if(f->m.count(s[i])==0) f=root;
else{
//找到了,j无限向上找失配节点,如果是单词结尾,累加数量
j=f;
while(j!=NULL){
j=j->fail;
}
}
}
}
(责任编辑:admin) |