nyoj 685查找字符串
-
-
查找字符串
时间限制:1000 ms | 内存限制:65535 KB难度:3- 描述
-
小明得到了一张写有奇怪字符串的纸,他想知道一些字符串出现了多少次,但这些字符串太多了,他想找你帮忙,你能帮他吗?输入字符包括所有小写字母、‘@’、‘+’。
- 输入
-
第一行包含一个整数T(T<=100).表示测试数据组数。
接下来每组数据第一行包含两个整数n,m(n,m<100000),分别表示有n个字符串,小明要问你m次。
接下来n行,每行包含一个字符串,长度不大于15。
接下来m行,每行包含一个字符串,表示小明要问该串出现的次数。 - 输出
- 输出每组小明询问数串出现的次数。
- 样例输入
-
15 3helloit@is+so@easyhelloibelieveicanachellohelloicannotacitGiveup
- 样例输出
-
300
- 来源
- NYIST第一届校赛(非专业组)
- 上传者
- ACM_丁国强
- 题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=685
无删除操作和有删除操作释放空间的差距,如图:1364为代码一所占的空间,308为代码二所占的空间
代码一:无删除操作
#include<iostream> #include<cstring> #include<cstdio> using namespace std; typedef struct TrieNode{int data;TrieNode *next[28];TrieNode(){data=0;memset(next,0,sizeof(next));} }T; TrieNode *root=NULL; //声明一个根节点 void Build(char *c) //建字典树 {int i,v,l=strlen(c);TrieNode *p=root; TrieNode *q=NULL;for(i=0;i<l;i++){ if(c[i]=='+')v=26;else if(c[i]=='@')v=27;else v=c[i]-'a';if(p->next[v]==NULL){q=new TrieNode;p->next[v]=q;}p=p->next[v];p->data++;} } int Find(char *c) {int i,v,l=strlen(c);TrieNode *p=root; for(i=0;i<l;i++){if(c[i]=='+')v=26;else if(c[i]=='@')v=27;else v=c[i]-'a';if(p->next[v]==NULL){return 0;break;}else p=p->next[v]; }return p->data; } int main() {int T;int n,m;char str[15];scanf("%d",&T);while(T--){root=new TrieNode;scanf("%d %d",&n,&m);while(n--){ scanf("%s",str);Build(str);}while(m--){scanf("%s",str);printf("%d\n",Find(str));}}return 0; }
代码二:有删除操作
#include<iostream> #include<cstring> #include<cstdio> using namespace std; typedef struct TrieNode{int data;TrieNode *next[28];TrieNode(){data=0;memset(next,0,sizeof(next));} }T; TrieNode *root=NULL; //声明一个根节点 void Build(char *c) //建字典树 {int i,v,l=strlen(c);TrieNode *p=root; TrieNode *q=NULL;for(i=0;i<l;i++){ if(c[i]=='+')v=26;else if(c[i]=='@')v=27;else v=c[i]-'a';if(p->next[v]==NULL){q=new TrieNode;p->next[v]=q;}p=p->next[v];p->data++;} } int Find(char *c) {int i,v,l=strlen(c);TrieNode *p=root; for(i=0;i<l;i++){if(c[i]=='+')v=26;else if(c[i]=='@')v=27;else v=c[i]-'a';if(p->next[v]==NULL){return 0;break;}else p=p->next[v]; }return p->data; } void Delate(TrieNode *root) { for(int i=0;i<28;i++) if(root->next[i]) Delate(root->next[i]); delete(root); } int main() {int T;int n,m;char str[15];scanf("%d",&T);while(T--){root=new TrieNode;scanf("%d %d",&n,&m);while(n--){ scanf("%s",str);Build(str);}while(m--){scanf("%s",str);printf("%d\n",Find(str));}Delate(root);}return 0; }
-
nyoj 685查找字符串相关推荐
- NYOJ 685 查找字符串(map)
查找字符串 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 小明得到了一张写有奇怪字符串的纸,他想知道一些字符串出现了多少次,但这些字符串太多了,他想找你帮忙,你能帮他吗 ...
- NYOJ 685 查找字符串 字典树
查找字符串 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 小明得到了一张写有奇怪字符串的纸,他想知道一些字符串出现了多少次,但这些字符串太多了,他想找你帮忙,你能帮他吗 ...
- 在目录下所有文件中查找字符串
目录下的所有文件中查找字符串 find .| xargs grep -ri "class" 目录下的所有文件中查找字符串,并且只打印出含有该字符串的文件名 find .| xarg ...
- python找字符串_Python如何实现查找字符串
Python如何实现查找字符串 发布时间:2020-10-28 22:07:02 来源:亿速云 阅读:89 作者:Leah 本篇文章为大家展示了Python如何实现查找字符串,内容简明扼要并且容易理解 ...
- vim 忽略大小写查找字符串
Vim 忽略大小写查找字符串 Vim被认为是高效的代码管理工具,可想而知,平时利用vim进行代码编辑的程序员是多么厉害. 一.方法一 二.方法二 方法:底行模式下,输入命令 set ignorecas ...
- python查询文件软件_Python小工具--多文件查找字符串fs
前几天,在看Android的makefile时,为方便自己在make文件查找字符串,用perl写了个小工具,实现的功能就是在目录下的多个文本文件中查找字符串.那个工具在同事的帮助下,已经实现了不少功能 ...
- php 计算字符串相邻最大重复数_php查找字符串出现次数的方法
本文实例讲述了php查找字符串出现次数的方法.分享给大家供大家参考.具体方法如下: 在php中查找字符串出现次数的查找可以通过substr_count()函数来实现,下面就来给大家详细介绍这些函数. ...
- mysql逗号分隔正则查询_正则表达式在逗号分隔的列表中查找字符串和下一个字符-MySQL?...
要搜索以逗号分隔的列表,请使用MySQL find_in_set().这里不需要为此使用正则表达式.语法如下-select *from yourTableName where find_in_set( ...
- C++horspool算法查找字符串是否包含子字符串(附完整源码)
C++horspool算法查找字符串是否包含子字符串 C++Shorspool算法查找字符串是否包含子字符串完整源码(定义,实现,main函数测试) C++Shorspool算法查找字符串是否包含子字 ...
最新文章
- 探究oracle clob字段是怎样存储的
- mysql地区时间_mysql – 带时区的日期时间格式
- 话筒增益_话筒啸叫怎么办?教你四个解决话筒啸叫的方法!
- ABAP, UI5和webpack的处理入口
- 最大子序和:单调队列维护一个上升序列
- html5 拍照 清晰度,html5强大的功能(一)
- 【转】Asp.Net MVC详解Controller之Filter
- JS数组操作之增删改查
- 如何实现一个拍照搜题功能
- 文本聚类分析算法_集成聚类系列(三)图聚类算法详解
- Android APK反编译就这么简单 详解(附图)
- MapABC地图API
- 打开DOSbox时设置指定虚拟路径
- Apache是干什么的?
- VMware 虚拟机开启Ip地址自动更换解决
- zuk z2 Android7.0官方,联想ZUK Z2确定升级安卓7.0:官方曝光系统截图
- CMake构建动态库
- Mac系统通过标签管理文件
- 【软考网络管理员】2023年软考网管初级常见知识考点(2)- 数据通信技术
- WC酱油记——博客一个月没更新留念