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

【AcWing 835题解】滑动窗口

AcWing 835. Trie字符串统计
【题目描述】
在这里插入图片描述
在查看解析之前,先给自己一点时间思考哦!
天津之眼
【题解】
可以使用Trie 树来解决这个问题,Trie树可以高效地支持字符串的插入和查询操作。

Trie树的基本概念:
Trie树是一种树形结构,用来存储字符串,其中每个节点表示一个字符。
每条从根节点到叶子节点的路径表示一个字符串。
每个节点的cnt数组用于记录该节点对应的字符串出现的次数。

插入操作:遍历字符串的每个字符,通过Trie树构建路径。如果路径不存在,就创建新的节点。最终在路径的末尾节点上增加出现次数。
查询操作:根据字符串的每个字符,沿着树路径向下查找。如果路径存在,则返回末尾节点的cnt值;如果路径不存在,说明该字符串没有插入过,返回0
【参考代码】

#include <iostream>using namespace std;const int N = 100010;  // 最大节点数// son[i][j] 表示节点 i 的第 j 个子节点
int son[N][26], cnt[N], idx;  // son 数组、节点计数、当前索引
char str[N];  // 存储字符串// 插入字符串到 Trie 树
void insert(char *str) {int p = 0;  // 从根节点开始for (int i = 0; str[i]; i++) {  // 遍历字符串的每个字符int u = str[i] - 'a';  // 将字符转换为 0-25 的数字,表示字母 a-zif (!son[p][u]) son[p][u] = ++idx;  // 如果当前节点没有这个子节点,创建新节点p = son[p][u];  // 移动到子节点}cnt[p]++;  // 最后一个字符的节点增加出现次数
}// 查询字符串在 Trie 树中出现的次数
int query(char *str) {int p = 0;  // 从根节点开始for (int i = 0; str[i]; i++) {  // 遍历字符串的每个字符int u = str[i] - 'a';  // 将字符转换为 0-25 的数字if (!son[p][u]) return 0;  // 如果找不到当前字符的子节点,返回 0p = son[p][u];  // 移动到子节点}return cnt[p];  // 返回字符串的出现次数
}int main() {int n;scanf("%d", &n);  while (n--) {char op[2];  scanf("%s%s", op, str); if (*op == 'I') insert(str);  else printf("%d\n", query(str)); }return 0;
}
http://www.xdnf.cn/news/16305.html

相关文章:

  • MGER作业
  • 基于DataX的数据同步实战
  • Linux内核设计与实现 - 第14章 块I/O层
  • RustFS for .NET 演示项目深度解析:构建 S3 兼容的分布式存储应用
  • 【VLLM】open-webui部署模型全流程
  • Compose笔记(三十八)--CompositionLocal
  • 如何从自定义或本地仓库安装 VsCode 扩展
  • lottie 动画使用
  • JavaEE初阶第十一期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(九)
  • Springboot+MongoDB简单使用示例
  • 哈希指针与数据结构:构建可信数字世界的基石
  • window上建立git远程仓库
  • Android 键盘
  • GCN模型的设计与训练(入门案例)
  • Rust Web框架性能对比与实战指南
  • 计算机结构-逻辑门、存储器、内存、加法器、锁存器、程序计数器
  • Aerospike与Redis深度对比:从架构到性能的全方位解析
  • npm ERR! cb() never called!
  • sssss
  • Ubuntu安装node-red
  • 刷题日记0726
  • 杰理蓝牙耳机开发--三轴加速度传感器与IIC通信
  • 关于树(按序遍历,搜索,LCA)
  • Git版本控制
  • Linux 系统调用详解:操作文件的常用系统调用
  • 大语言模型 LLM 通过 Excel 知识库 增强日志分析,根因分析能力的技术方案(3):使用云平台最小外部依赖方案
  • Spring AI 项目实战(二十):基于Spring Boot + AI + DeepSeek的智能环境监测与分析平台(附完整源码)
  • GRE及MGRE应用综合实验
  • Day32| 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
  • 复杂产品系统集成协同研发平台的研究与实现