当前位置: 首页 > news >正文

2.数据结构:1.Tire 字符串统计

1.Tire 字符串统计

#include<algorithm>
#include<cstring>
#include<iostream>

using namespace std;

const int N=100010;
int son[N][26];//至多 N 层,每一层至多 26 个节点(字母)
int cnt[N];//字符串至多 N 个,标记每个字符串的最后一个字母,
//统计出现次数
int idx;//用到的节点的总数
char str[N];//单次输入的字符串

void insert(char str[]){
    int p=0;//根节点
    for(int i=0;str[i];i++){//字符串的每一个字母分别存在每一层
        int u=str[i]-'a';//把 a-z 映射到 0-25
        if(!son[p][u]){//假设该节点不存在
            son[p][u]=++idx;//把该节点构造出来
        }
        p=son[p][u];//走到下一层的节点
    }
    cnt[p]++;//标记字符串的最后一个字母,维护计数器
}

//查询和插入同理,不再赘述
int query(char str[]){
    int p=0;
    for(int i=0;str[i];i++){
        int u=str[i]-'a';
        if(!son[p][u]){
            return 0;
        }
        p=son[p][u];
    }
    return cnt[p];
}

int main(){
    int n;
    cin>>n;
    
    while(n--){
        char op[2];
        cin>>op>>str;
        if(op[0]=='I'){
            insert(str);
        }else{
            printf("%d\n",query(str));
        }
    }
    
    return 0;
}

相关文章:

  • PDF文档中表格以及形状解析
  • Electron一小时快速上手
  • 【Swift 算法实战】城市天际线问题解法
  • 231.跳跃游戏
  • 蓝桥杯备考:DFS剪枝之数的划分
  • React 组件基础介绍
  • 新一代跨境电商ERP系统:从订单到发货的全流程自动化管理
  • Git GitHub基础
  • Web Worker 使用教程
  • 执行yum -y install npt 报错解决
  • linux ununtu通过nginx-1.6.2.tar.gz安装nginx并安装在自定义目录XXX下 的步骤
  • 示波器探头衰减值:简单来说就是“信号缩小器
  • docker启动elasticsearch,挂载文件报错:Device or resource busy
  • ssh配置 远程控制 远程协作 github本地配置
  • 蓝桥杯备赛-前缀和-可获得的最小取值
  • 信号处理:互相关函数
  • 蓝桥与力扣刷题(蓝桥 特别数的和)
  • 论文:KernelBench: Can LLMs Write Efficient GPU Kernels?
  • centos虚拟机无法安装工具
  • Android开发奇葩bug:布局宽高不自动自适应了