试题编号: 201409-3
试题名称: 字符串匹配
时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。
输入格式
输入的第一行包含一个字符串S,由大小写英文字母组成。
  第二行包含一个数字,表示大小写敏感的选项,当数字为0时表示大小写不敏感,当数字为1时表示大小写敏感。
  第三行包含一个整数n,表示给出的文字的行数。
  接下来n行,每行包含一个字符串,字符串由大小写英文字母组成,不含空格和其他字符。
输出格式
输出多行,每行包含一个字符串,按出现的顺序依次给出那些包含了字符串S的行。
样例输入
Hello
1
5
HelloWorld
HiHiHelloHiHi
GrepIsAGreatTool
HELLO
HELLOisNOTHello
样例输出
HelloWorld
HiHiHelloHiHi
HELLOisNOTHello
样例说明
在上面的样例中,第四个字符串虽然也是Hello,但是大小写不正确。如果将输入的第二行改为0,则第四个字符串应该输出。
评测用例规模与约定
1<=n<=100,每个字符串的长度不超过100。


问题链接:CCF201409试题。

问题描述:参见上文。

问题分析:这是一个简单的字符串处理问题,关键是对有关字符串处理函数是否熟悉。这里采用KMP算法实现。

程序说明:有关字符串的处理,这里采用用C语言的函数实现。

相关链接:CCF201409-3 字符串匹配(100分)。

提交后得100分的C++语言程序如下:

/* CCF201409-3 字符串匹配 */#include <iostream>
#include <cstring>using namespace std;// KMP算法:函数getnext()和kmp()
void getnext(int next[], char t[])
{int i=0, j=-1;next[0] = -1;while(t[i]!='\0')if(j == -1 || t[i] == t[j])next[++i] = ++j;elsej = next[j];
}int kmp(int next[], char s[], char t[])
{int i=0, j=0, len1=strlen(s), len2=strlen(t);while(i < len1 && j < len2){if(j == -1 || s[i] == t[j])++i, ++j;elsej = next[j];}if(j>=len2)return i-len2+1;elsereturn -1;
}const int MAXN = 100;
int next[MAXN+1];
char s[MAXN+1], s2[MAXN+1], t[MAXN+1];int main()
{int option, m;cin >> t >> option;if(option == 0)for(int i=0; t[i]; i++)t[i] = tolower(t[i]);getnext(next, t);cin >> m;while(m--) {cin >> s;strcpy(s2, s);if(option == 0)for(int i=0; s2[i]; i++)s2[i] = tolower(s2[i]);if(kmp(next, s2, t) != -1)cout << s << endl;}return 0;
}

CCF201409-3 字符串匹配(解法二)(100分)(废除!!!)相关推荐

  1. 6-2 综合成绩排名-结构体二 (100分)

    6-2 综合成绩排名-结构体二 (100分) 众所周知,计算机院要对申请转入计算机大类的学生进行考核,考核方式包括机试和面试.学生综合成绩采取百分制,其中50%由机试成绩核算,另50%由学生已获得的加 ...

  2. HDU1106 排序(解法二)(废除!!!)

    本文废除!!! 请点击以下的参考链接!!! 参考链接:HDU1106 排序[字符串+整数+排序]. 问题链接:HDU1106 排序. 问题简述:参见上述链接. 问题分析:这个程序的逻辑并不十分复杂,主 ...

  3. 字符串匹配(二)——逆向思维 BMH

    BMH算法 BMH(Boyer-Moore-Horspool)算法是BM(Boyer-Moore)算法的一种优化,P从最右边开始比较. 核心:焦点在于坏字符上,根据字符在模式串P中出现的最后的位置算出 ...

  4. HDU2502 月之数(解法二)【废除!!!】

    本文废除,参见以下链接. 参考链接:HDU2502 月之数[递推] 月之数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/ ...

  5. HDU1013 POJ1519 Digital Roots(解法二)【废除!!!】

    本文废除!!! 参见链接:HDU1013 POJ1519 UVALive2085 Digital Roots[数根+水题] 该问题的最佳解法是利用数论的9余数定理来计算数根.一个数的数根等于该数的9的 ...

  6. HDU4607 Park Visit(解法二)【废除!!!】

    本文废除!!! 参见链接:HDU4607 Park Visit[DFS] 问题链接:HDU4607 Park Visit. 题意简述:莱克尔和她的朋友到公园玩,公园很大也很漂亮.公园包含n个景点通过n ...

  7. HDU1164 Eddy's research I(解法二)【废除!!!】

    本文废除,参见以下参考链接: 参考链接:HDU1164 Eddy's research I[素因子分解+筛选法+欧拉函数] 问题链接:HDU1164 Eddy's research I 问题描述:参见 ...

  8. UVALive5461 UVA615 POJ1308 Is It A Tree?(解法二)【废除!!!】

    本文废除!!! 参考链接:UVALive5461 UVA615 POJ1308 ZOJ1268 Is It A Tree?[并查集] Regionals 1997 >> North Ame ...

  9. POJ1338 Ugly Numbers(解法二)【废除!!!】

    本文废除!!! 参考链接:POJ1338 Ugly Numbers[水题] 问题链接:POJ1338 Ugly Numbers.基础级练习题,用C语言编写程序. 题意简述:不能被2.3和5以外的素数整 ...

  10. HDU1234 开门人和关门人(解法二)【废除!!!】

    本文废除!!! 参考链接:HDU1234 开门人和关门人 问题链接:HDU1234 开门人和关门人. 问题简述:参见上述链接. 问题分析:之前所做的程序质量不高,所以重做该题的题解.上次使用了结构数组 ...

最新文章

  1. AI一分钟 | 谷歌开发者大会,千人同玩AI小程序;阿里获杭州首张自动驾驶牌照...
  2. 实战2--应用EL表达式显示投票结果
  3. python常用操作符_Python--3常用操作符
  4. 通过Lazada日销千件,国内爆款如此打开东南亚爆单之门
  5. 关闭防火墙命令 500 OOPS: cannot change directory:
  6. 网络负载平衡(Network Load Balancing)的工作原理
  7. 如何在Redhat7.4安装CDH6.2
  8. 解析二进制文件的工具方法
  9. linux skype 4.3,在Arch Linux上安装Skype 4.3(最新版本)
  10. 调和平均数,几何平均数,算数平均数,平方平均数
  11. WARNING: One of the plugins you are using supports Java 8 language features. To try the support buil
  12. Apache访问控制和Web虚拟主机
  13. CT时间与当前时间的大小比较
  14. npm插件开发-Vue插件
  15. 合工大计算机系汪教授,合肥工业大学计算机与信息学院导师介绍:方宝富
  16. Android 加速度传感器的使用详解
  17. 单机版Docker Swarm安装及试用
  18. iStylePDF安全电子文档解决方案之评标报告专家签字
  19. 【WEB】CSS常用基础知识
  20. SnowNLP实现情感分析(今日头条用户评论为数据源)

热门文章

  1. .net core 多平台开发体验
  2. python多项式求导_Python求离散序列导数的示例
  3. 轻量级锁_一句话撸完重量级锁、自旋锁、轻量级锁、偏向锁、悲观、乐观锁等各种锁 不看后悔系列...
  4. 2020-10-27中国大学MOOC学习进度
  5. 计算机英语微课,【计算机英语论文】大学计算机基础微课设计研究
  6. clone远程代码 在不同电脑上git_Git 如何 clone 远程 非 master 分支的代码
  7. 编译原理课程作业-Cminus语言的词法及语法分析器实现
  8. TensorFlow安装中碰到的问题汇总
  9. Linux进程地址空间探究
  10. open cv+C++错误及经验总结(十)