zoukankan      html  css  js  c++  java
  • # Trie 835. Trie字符串统计

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

    “I x”向集合中插入一个字符串x;
    “Q x”询问一个字符串在集合中出现了多少次。
    共有N个操作,输入的字符串总长度不超过 105105,字符串仅包含小写英文字母。

    输入格式

    第一行包含整数N,表示操作数。

    接下来N行,每行包含一个操作指令,指令为”I x”或”Q x”中的一种。

    输出格式

    对于每个询问指令”Q x”,都要输出一个整数作为结果,表示x在集合中出现的次数。

    每个结果占一行。

    数据范围

    1≤N≤2∗1041≤N≤2∗104
    输入样例:

    5
    I abc
    Q abc
    Q ab
    I ab
    Q ab
    输出样例:

    1
    0
    1

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int num[1000010],pos=1,trie[1000010][26];
    int Insert(string str){
    	int c=0;
    	for(int i=0;i<str.size();i++){
    		int n=str[i]-'a';
    		if(trie[c][n]==0) trie[c][n]=pos++;
    		c=trie[c][n];
    	}
    	++num[c];
    } 
    int Find(string str){
    	int c=0;
    	for(int i=0;i<str.size();i++){
    		int n=str[i]-'a';
    		if(trie[c][n]==0)
    		return 0;
    		c=trie[c][n];
    	}
    	return num[c];
    } 
    int main(){
    	memset(num,0,sizeof(num));
    	int n;
    	cin>>n;
    	while(n--){
    		char ch;
    		string s;
    		cin>>ch>>s;
    		if(ch=='I'){
    			Insert(s);
    		}
    		if(ch=='Q'){
    			cout<<Find(s)<<endl;
    		}
    	}
        return 0;
    }```
    
    
  • 相关阅读:
    HTTP协议
    MySQL建立主-从服务器双机热备配置
    centOS7安装配置mysql5.7.21
    修改docker镜像的默认存储目录
    docker--学习笔记
    MySQL数据库操作
    zabbix注意事项和常用命令
    CnentOS6.5安装zabbix2.2
    如何查询一个进程下面的线程数(进程和线程区别)
    OSPF与ACL实例
  • 原文地址:https://www.cnblogs.com/yuanyulin/p/14026783.html
Copyright © 2011-2022 走看看