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

【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.lryc.cn/news/600258.html

相关文章:

  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现沙滩小人检测识别(C#代码UI界面版)
  • CT、IT、ICT 和 DICT区别
  • Day 22: 复习
  • Python 面向对象基础
  • 【Android】相对布局应用-登录界面
  • 基于 Claude Code 与 BrowserCat MCP 的浏览器自动化全链路构建实践
  • Android 修改系统时间源码阅读
  • 各种前端框架界面
  • 【GoLang#3】:数据结构(切片 | map 映射)
  • SAP ABAP的数据通过调用泛微Restful API同步数据到OA建模表
  • 《基于雅可比矢量近似的EIT触觉传感灵敏度非均匀校正》论文解读
  • Yocto 项目直播教学|今天晚上 21:30 直播!
  • python---字典(dict)
  • OpenCV图像梯度、边缘检测、轮廓绘制、凸包检测大合集
  • 【Linux手册】操作系统如何管理存储在外设上的文件
  • 2025牛客暑期多校第4场——G
  • MCP协议深度解析:客户端-服务器架构的技术创新
  • CMakeLists.txt 怎么写
  • 电脑开机后网络连接慢?
  • @PathVariable与@RequestParam的区别
  • 【洛谷】单向链表、队列安排、约瑟夫问题(list相关算法题)
  • 刷题日记0725
  • 二开----02
  • 【前端工程化】前端项目开发过程中如何做好通知管理?
  • Model Control Protocol 三层架构设计,三种传输方式,完成MCP项目构建实现工具调试,多维度评价指标检测多工具多资源调用的鲁棒性和稳健性
  • 从零本地部署使用Qwen3-coder进行编程
  • Web开发传参的四种常见方式介绍
  • 太极生两仪,两仪生四象,四象生八卦
  • 智慧电视:开启养老新时代
  • 【图像理解进阶】如何对图像中的小区域进行细粒度的语义分割?