Trie(字典树模板)

    xiaoxiao2021-03-25  74

    (查找是否纯在前缀) 结构体 Trie 成员函数: void init() 初始化 void insert(char*str) 插入字符串str int query(int s) 从s开始查找是否纯在一个字符串是另一个字符串的前缀

    //N 字符集大小 如果是数字为10,如果是字母为26,大小写为52 //AIM 字符集最小字符 struct Trie { struct node { bool flog; //标记单词结尾 int next[N]; void init() { for(int i=0;i<N;i++) next[i]=-1; flog=false; } }; node p[100005]; int top; void init() { top=1; p[0].init(); } void insert(char *str) //插入字符串 { int pp=0; for(int i=0;str[i];i++) { if(p[pp].next[str[i]-AIM]==-1) { p[pp].next[str[i]-AIM]=top; p[top].init(); top++; } pp=p[pp].next[str[i]-AIM]; } p[pp].flog=true; } int query(int s) //查找 { if(p[s].flog!=0) { for(int i=0;i<N;i++) if(p[s].next[i]!=-1) return false; return true; } bool ans=true; for(int i=0;i<N;i++) { if(p[s].next[i]!=-1) ans=ans&&query(p[s].next[i]); } return ans; } }T;
    转载请注明原文地址: https://ju.6miu.com/read-35651.html

    最新回复(0)