zoukankan      html  css  js  c++  java
  • 【模板题】 字符串统计

    传送门

    题意

    维护一个字符串集合,支持两种操作:

    • ((I,x))向集合中插入一个字符串(x)
    • ((Q,x))询问一个字符串在集合中出现了多少次。

    字符仅包含小写字母

    数据范围

    (1leq N leq 2 imes 10^{4})
    (1 leq |S|leq 10^{5})

    题解

    利用字典树统计字符串数目模板题,在字典树中,每条边表示的是字符串中的字符,
    在每个字符串的终止节点来计算数目

    Code

    #include<bits/stdc++.h>
    using namespace std;
    #define rep(i,a,n) for(int i=a;i<n;i++)
    #define per(i,a,n) for(int i=n-1;i>=a;i--)
    
    const int N=1e5+10;
    
    int trie[N][26],cnt[N],tot=1;
    char s[N];
    int n;
    
    void insert(char s[])
    {
        int p=1;
        for(int i=0;s[i];i++)
        {
            int c=s[i]-'a';
            if(!trie[p][c]) trie[p][c]=++tot;
            p=trie[p][c];
        }
        cnt[p]++;
    }
    
    int query(char s[])
    {
        int p=1;
        for(int i=0;s[i];i++) // c++字符串结尾是0
        {
            int c=s[i]-'a';
            if(!trie[p][c]) return 0;
            p=trie[p][c];
        }
        return cnt[p];
    }
    
    void solve()
    {
        cin>>n;
        char op[2];
        while(n--)
        {
            cin>>op>>s;
            if(op[0]=='I')  insert(s);
            else cout<<query(s)<<endl;
        }
    }
    int main()
    {
        solve();
    }
    
  • 相关阅读:
    IE9的css hack
    ie6 插入图片img png24 阴影
    clear:both; overflow:hidden
    ie6 背景图片 png24 阴影
    html 页面定位
    IE无法显示PNG
    行内元素 & 块元素
    div+css布局时的浏览器兼容问题
    删除源代码的管理信息(VSS)
    string path;
  • 原文地址:https://www.cnblogs.com/hhyx/p/13386489.html
Copyright © 2011-2022 走看看