字典树(前缀树)

题目链接

835. Trie字符串统计
142. 前缀统计

835. Trie字符串统计

维护一个字符串集合,支持两种操作:

  • I x 向集合中插入一个字符串 x
  • Q x 询问一个字符串在集合中出现了多少次。
    共有 N 个操作,输入的字符串总长度不超过 105,字符串仅包含小写英文字母。

输入格式

第一行包含整数 N,表示操作数。

接下来 N 行,每行包含一个操作指令,指令为 I xQ x 中的一种。

输出格式

对于每个询问指令 Q x,都要输出一个整数作为结果,表示 x 在集合中出现的次数。

每个结果占一行。

数据范围

1N2104

输入样例:

5 I abc Q abc Q ab I ab Q ab

输出样例:

1 0 1

设所有操作涉及的字符串的长度为 n,则

  • 时间复杂度:O(n)

代码

#include<string> #include<iostream> using namespace std; const int N=1e5+5; int cnt[N],son[N][26],idx; void insert(string s) { int p=0; for(int i=0;i<s.size();i++) { char c=s[i]-'a'; if(!son[p][c])son[p][c]=++idx; p=son[p][c]; } cnt[p]++; } int ask(string s) { int p=0; for(int i=0;i<s.size();i++) { char c=s[i]-'a'; p=son[p][c]; if(!p)return 0; } return cnt[p]; } int main() { int t; for(cin>>t;t;t--) { string s[2]; cin>>s[0]>>s[1]; if(s[0]=="I")insert(s[1]); else cout<<ask(s[1])<<'\n'; } return 0; }

142. 前缀统计

给定 N 个字符串 S1,S2SN,接下来进行 M 次询问,每次询问给定一个字符串 T,求 S1SN 中有多少个字符串是 T 的前缀。

输入字符串的总长度不超过 106,仅包含小写字母。

输入格式

第一行输入两个整数 NM

接下来 N 行每行输入一个字符串 Si

接下来 M 行每行一个字符串 T 用以询问。

输出格式

对于每个询问,输出一个整数表示答案。

每个答案占一行。

输入样例:

3 2 ab bc abc abc efg

输出样例:

2 0

设所有操作涉及的字符串的长度为 n,则

  • 时间复杂度:O(n)

代码

#include<string> #include<iostream> using namespace std; const int N=1e6+5; int n,m,cnt[N],son[N][26],idx; void insert(string s) { int p=0; for(int i=0;i<s.size();i++) { char c=s[i]-'a'; if(!son[p][c])son[p][c]=++idx; p=son[p][c]; } cnt[p]++; } int ask(string s) { int res=0,p=0; for(int i=0;i<s.size();i++) { char c=s[i]-'a'; p=son[p][c]; if(!p)break; res+=cnt[p]; } return res; } int main() { cin>>n>>m; string s; while(n--) { cin>>s; insert(s); } while(m--) { cin>>s; cout<<ask(s)<<'\n'; } return 0; }

__EOF__

本文作者acwing_zyy
本文链接https://www.cnblogs.com/zyyun/p/15468894.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   zyy2001  阅读(35)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示