一种可以高效地存储和查询字符串的数据结构
#include<bits/stdc++.h>
using namespace std;
const int N=20010;
int sinn[N][100],cnt[N],idx;
void add(string s){
int p=0;
for(int i=0;i<s.size();i++){
int t=s[i]-48;
if(!sinn[p][t]){
sinn[p][t]=++idx;
}
p=sinn[p][t];
}
cnt[p]++;
return ;
}
int qur(string s){
int p=0;
for(int i=0;i<s.size();i++){
int t=s[i]-48;
if(!sinn[p][t]){
return 0;
}
p=sinn[p][t];
}
return cnt[p];
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n,q;
cin>>n;
for(int i=1;i<=n;i++){
string s,s2;
cin>>s>>s2;
if(s=="I"){
add(s2);
}
else{
cout<<qur(s2)<<endl;
}
}
return 0;
}