Trie字符串统计
2022/7/31 6:22:47
本文主要是介绍Trie字符串统计,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Trie字符串统计
摘自acwing模板题https://www.acwing.com/problem/content/837/
trie数的存储和查找
形如上面的树,左边的字符串是要存储的字符串,存完一个字符串在他的末尾记录一个标记(方便查找操作) 存储: 存储的时候,一个字符就存放成一个结点,结尾字符打标记. 查找: 查找的时候如果查找到下一个字符不匹配就查找失败 如果查找到,虽然找到了匹配字符但没有标记说明没有存储这个字符串,查找失败 如果查找到最后没有匹配,查找失败
代码
#include<iostream> using namespace std ; const int N = 100010 ; int son[N][26], cnt[N], idx; // 树数组,标记数组(记录到这里有多少个字符串), 用到哪个"内存" char str[N]; void insert(char *str) { int p = 0; for(int i = 0;str[i]; i ++) { int u = str[i] - 'a'; 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]; scanf("%s%s",op,str); if(op[0] == 'I') insert(str); else printf("%d\n",query(str)); } return 0; }
这篇关于Trie字符串统计的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-17基于SpringWeb MultipartFile文件上传、下载功能
- 2024-04-14个人开发者,Spring Boot 项目如何部署
- 2024-04-14RAG应用开发实战02-相似性检索的关键 - Embedding
- 2024-04-14出海软件草根逆袭打法是什么?
- 2024-04-13鸿蒙原生应用再新丁!企查查 碧蓝航线 入局鸿蒙
- 2024-04-11RAG应用开发实战(01)-RAG应用框架和解析器
- 2024-04-10DevOps已死?2024年的DevOps将如何发展
- 2024-04-10码农必看:常见源代码混淆技术详解
- 2024-04-07以一当十丨TiDB 在东吴证券秀财 APP 的应用实践
- 2024-04-07月活超 1.1 亿,用户超 4 亿,你也在用的「知乎」是如何在超大规模 TiDB 集群上玩转多云多活的?来听听知乎代晓磊的答案!