查找字符串

时间限制:1000 ms  |  内存限制:65535 KB
难度:3

描述

小明得到了一张写有奇怪字符串的纸,他想知道一些字符串出现了多少次,但这些字符串太多了,他想找你帮忙,你能帮他吗?输入字符包括所有小写字母、‘@’、‘+’。

输入
第一行包含一个整数T(T<=100).表示测试数据组数。
接下来每组数据第一行包含两个整数n,m(n,m<100000),分别表示有n个字符串,小明要问你m次。
接下来n行,每行包含一个字符串,长度不大于15。
接下来m行,每行包含一个字符串,表示小明要问该串出现的次数。
输出
输出每组小明询问数串出现的次数。
样例输入
1
5 3
hello
it@is+so@easy
hello
ibelieveicanac
hello
hello
icannotacit
Giveup

样例输出

3
0
0

因为‘+’的ASCII值是43,‘@’的是64,小写字母的是97-122之间,‘+’与‘z’相差80,所以每次开辟空间的时候要开辟80个新的空间。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct node
{int cnt;struct node *next[80]; /*80个子节点*/
};
struct node *root;/*定义根节点*/
struct node* build() /*建立新的节点*/
{ struct node *p=(node *)malloc(sizeof(node));  /*动态分配内存*/p->cnt=0; for(int i=0;i<80;i++){p->next[i]=NULL; /*新建节点的子节点为空*/}return p;
}
int insert(char*s)
{struct node *p=root;int len=strlen(s);for(int i=0;i<len;i++){if(p->next[s[i]-'+']!=NULL)p=p->next[s[i]-'+'];else{p->next[s[i]-'+']=build();p=p->next[s[i]-'+'];}}return p->cnt++;
}
int search(char *s)
{int len=strlen(s);struct node *p=root;for(int i=0;i<len;i++){if(p->next[s[i]-'+']!=NULL)p=p->next[s[i]-'+'];else return 0;}return p->cnt;
}
int main()
{int n,m,t,i;char s1[20],s2[20];scanf("%d",&t);while(t--){root=build();/*建立根节点*/scanf("%d%d",&n,&m);getchar();for(i=0;i<n;i++){gets(s1);insert(s1);}for(i=0;i<m;i++){gets(s2);printf("%d\n",search(s2));}}return 0;
}

其实就是套用模板。

NYOJ 685 查找字符串 字典树相关推荐

  1. nyoj 685查找字符串

    查找字符串 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 小明得到了一张写有奇怪字符串的纸,他想知道一些字符串出现了多少次,但这些字符串太多了,他想找你帮忙,你能帮他吗 ...

  2. NYOJ 685 查找字符串(map)

    查找字符串 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 小明得到了一张写有奇怪字符串的纸,他想知道一些字符串出现了多少次,但这些字符串太多了,他想找你帮忙,你能帮他吗 ...

  3. nyoj 947 Max Xor(字典树)

    Max Xor 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 给一个长度为 n 的数列 {an} ,找出 max {ai ^ aj}. 输入 多组测试数据. 第 1 行 ...

  4. 字典树简单实现 插入 查找 遍历

    字典树是一种存储字符串的高效的结构,它保存了不同字符的相同前缀,又因此叫做前缀树,使用前缀,大大避免相同字符的重复匹配,加快查找效率 字典树是一颗多叉树,比如存储26个字母的,那么就有26叉 字典树的 ...

  5. Tire树(字典树-字符串快速查找)

    前言 一.Tire树是什么? 二.怎么建立tire树 1.字符串插入Tire树入 2.查找字符串 总结 前言: 最近是在复习基础算法,正好复习到了数据结构,所以写了自己对Tire树的理解,数据结构对我 ...

  6. 经典算法题:字典树、并查集、单调栈、二分、带标记函数dp、树、全排列、字符串问题等常用算法

    0. Tips 1. 位运算 如何枚举一个二进制状态数字k的子集, 方法就是针对中的二进制为1的位开始进行减法,判断数字k的二进制子集, 像枚举(2^k-1) ~ 0一样枚举其子集: int sub ...

  7. 字符串处理——字典树

    [概述] 字典树,又称为单词查找树,Tire 树,是一种树形结构,它是哈希树的变种. 字典树与字典很相似,当要查一个单词是不是在字典树中,首先看单词的第一个字母是不是在字典的第一层,如果不在,说明字典 ...

  8. 前缀树(字典树,单词查找树,Trie树)

    参考网址:https://blog.csdn.net/u013949069/article/details/78056102?utm_source=copy 概述 前缀树又名字典树,单词查找树,Tri ...

  9. 字典树(单词查找树、Trie)

    文章目录 单词查找树 1 基本概念 2 字典树的应用 3 字典树基本操作的实现 4 参考资料 单词查找树 1 基本概念   百度百科对字典树的介绍为:是一种树形结构,是一种哈希树的变种.   < ...

最新文章

  1. 几十亿打水漂!世界最大移动通信展MWC因疫情33年来首次取消,多方损失惨重...
  2. 快速复制数据库表中的数据SQL
  3. 北京、深圳 | 百度视觉算法研发实习生 人脸活体方向
  4. linux 工业 网络协议,简单了解Linux TCP/IP协议栈
  5. 实验8 群体类、流类库与输入/输出(4学时)
  6. 《数字视频和高清:算法和接口》一2.6消费类电子显示器
  7. 解决ASP.NET MVC(post数据)Json请求太大,无法反序列化,而报【远程服务器返回错误: (500) 内部服务器错误】...
  8. 使用大数据分析需避免哪些错误
  9. 2020考研计算机专业课,2020考研:计算机考这4个科目,各科该这样备考
  10. 花店管理系统php网站,网上花店管理系统下载_网上花店管理系统官方下载-太平洋下载中心...
  11. lisp 车位块自动编号_湘源控规用使用手册.doc
  12. Android界面全屏显示,隐藏状态栏,可下拉显示状态栏
  13. 爬虫之使用阿布云伪装IP
  14. 移动端 input 调用手机键盘搜索功能
  15. Kaggle赛题-Synthetic Financial Datasets For Fraud Detection
  16. 关于计算机老师的话,关于赞美老师的话
  17. Bigtable: A Distributed Storage System for Structured Data_中文翻译
  18. 区块链在游戏产业掀起狂潮
  19. [置顶] 不写周报才是一件很嘻哈的事
  20. 2022李宏毅作业hw1—新冠阳性人员数量预测。

热门文章

  1. 大型网站运维工程师的职责和前景
  2. Tkinter之Label
  3. kFreeBSD有活过来的迹象?UbuntuBSD
  4. Redis 2.8.18 安装报错 error: jemalloc/jemalloc.h: No s
  5. 《Javascript高级程序设计》读书笔记之bind函数详解
  6. iccar conference oral presentation
  7. case study
  8. 两点感悟:关于教育与未来
  9. Ubuntu 14.04 FTP服务器--vsftpd的安装和配置
  10. curl请求本地域名问题