hihocoder 1014 Trie树
  dUbcXj9lnElT 2023年11月02日 42 0


题目链接:​​Trie树​

题目大意:给你n个字符串,m次询问,每次去询问给定的字符串是给定的字符串里面中多少个字符串的前缀

题目思路:字典树直接做就好了

#include <map>
#include <set>
#include <queue>
#include <stack>
#include <cmath>
#include <cstdio>
#include <vector>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>

using namespace std;
const int maxn = 1e6+10;

int le;
struct node{
int Next[26];
int cnt;
void init(){
cnt = 0;
memset(Next,-1,sizeof(Next));
}
}T[maxn];


void Insert(char *s){
int i = 0,p = 0;
while(s[i]){
int x = s[i]-'a';
if(T[p].Next[x] == -1){
T[le].init();
T[p].Next[x] = le++;
}
p = T[p].Next[x];
T[p].cnt++;
i++;
}
}

void query(char *s){
int i = 0,p = 0;
while(s[i]){
int x = s[i]-'a';
if(T[p].Next[x] == -1){
puts("0");
return ;
}
p = T[p].Next[x];
i++;
}
printf("%d\n",T[p].cnt);
}

int main(){
int n,m;
char str[20];
while(~scanf("%d",&n)){
le = 1;
T[0].init();
while(n--){
scanf("%s",str);
Insert(str);
}
scanf("%d",&m);
while(m--){
scanf("%s",str);
query(str);
}
}
return 0;
}


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  rEZj93RghFYQ   2023年11月02日   19   0   0 i++leetcode-java
dUbcXj9lnElT
最新推荐 更多