Trie树

Trie树是用来快速存储和查找字符串集合的数据结构

#include<iostream>
using namespace std;
const int N  = 1e6;
int n;
int son[N][26];//26为存储字符的个数
int cnt[N];//以当前字符结尾的单词有多少个
int idx;//当前用到的下标,注意下标是0的点,既是根节点,又是空节点。
char s[N];
void insert(char *s)
{
    int p = 0;//p表示的是第几个节点
    for(int i = 0; s[i] != '\0'; i ++)
    {
        int u = s[i] - 'a';
        if(!son[p][u])son[p][u] = ++ idx;
        p = son[p][u];
    }
    cnt[p] ++;
}

int qurry(char *s)
{
    int p = 0;//p表示的是第几个节点
    for(int i = 0; s[i] != '\0'; i ++)
    {
        int u = s[i] - 'a';
        if(!son[p][u])return 0;
        p = son[p][u];
    }
    return cnt[p];
}
int main()
{
    int n;
    cin >> n;
    while(n --)
    {
        char op;
        cin >> op >> s;
        if(op == 'I')insert(s);
        else cout <<qurry(s)<<endl;
    }
}
数据结构 文章被收录于专栏

数据结构

全部评论

相关推荐

11-09 11:01
济南大学 Java
Java抽象带篮子:外卖项目真得美化一下,可以看看我的详细的外卖话术帖子
点赞 评论 收藏
分享
10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务