AcWing 835. Trie字符串统计
原题链接
简单
作者:
Acvv_scl
,
2021-03-02 00:20:19
,
所有人可见
,
阅读 221
import java.util.*;
public class Main{
static int N=100010;
//指的是当前节点的第几个儿子节点的索引
static int[][]son=new int[N][26];
//第index个节点(此节点是叶子节点)的个数;
static int []cnt=new int[N];
//当前的index索引;
static int index;
static void insert(char[]chars){
int p=0;
for(int i=0;i<chars.length;i++){
int u=chars[i]-'a';
if(son[p][u]==0)son[p][u]=++index;
//重点是这个更新,指向它的儿子节点
p=son[p][u];
}
cnt[p]++;
}
static int query(char[]chars){
int p=0;
for(int i=0;i<chars.length;i++){
int u=chars[i]-'a';
if(son[p][u]==0)return 0;
p=son[p][u];
}
return cnt[p];
}
public static void main(String[]args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
while(n-->0){
String op=sc.next();
char[]chars=sc.next().toCharArray();
if(op.equals("I")){
insert(chars);
}else{
System.out.println(query(chars));
}
}
}
}