字符串检索,检索,查询。
字符频率统计
字符串排序
前缀匹配
#include <bits/stdc++.h>
using namespace std;
int trie[1000000][26];
int num[1000010];
int pos=1;
void Insert(char str[]){//在字典树中插入字符串,
int p=0;//从根节点开始
int len=strlen(str);
for(int i=0;i<len;i++){//遍历每个字符
if(str[i]>'z'||str[i]<'a') return;//防错
int n=str[i]-'a';//将字符转换成数字
if(trie[p][n]==0){
trie[p][n]=pos++;//如果之前没有该子节点,新建子节点
}
p=trie[p][n];//以子节点为根继续找下一个
num[p]++;//数量加加
}
}
int Find(char str[]){
int p=0;//从根节点开始查找
int len=strlen(str);
for(int i=0;i<len;i++){//遍历
int n=str[i]-'a';//转化
if(trie[p][n]==0) return 0;//如果没有这个字符出现过,就return
p=trie[p][n];//继续找下一个
}
return num[p];//输出答案,
}
int main()
{
int n,m;
char s[100];
cin>>n;
while(n--){
getchar();
cin>>s;
puts(s);
Insert(s);
}
cin>>m;
while(m--){
getchar();
cin>>s;
cout<<Find(s);
}
return 0;
}