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

#include<stdio.h>
#include<string.h> char s[][]; int main()
{
int i ,k , n , flag,len;//flag为开关
char testS[];//对照字符串
scanf("%s",testS);
len = strlen(testS);
scanf("%d",&flag);
scanf("%d",&n);
for(i = ; i< n ; i++)//循环输入测试字符串
scanf("%s",&s[i]);
for(i = ; i < n ; i++)
{
int j=;//局部变量,只在循环里使用,每次对照测试字符串都需要初始化
if(flag == ){
for(k = ;k < strlen(s[i]) ; k++)
{
if(s[i][k] == testS[j])//两个字符串中的字母比较,如果相等则比较下一个字母 (j++,k++)
j ++;
else//若遇到不相同的字母,则将对照的字符串testS下标初始化,从0继续开始
j=;
if(j >= len){//若对照字符串和测试字符串连续有 len = strlen(testS)个相同,则打印测试字符串
printf("%s\n",s[i]);
break;
}
}
}
else if(flag==){//当 选项关闭时,将对照字符串和测试字符串都转化为小写字母比较
char s1[][] ={};//存储转化后的测试字符串数组
char testS1[] = {};//存储转化后的对照字符串
for(k= ;k <= len ; k++ )
{
if(testS[k] >='A' && testS[k] <='Z')
testS1[k] =testS[k] + ;
else testS1[k] =testS[k];
}
for(k= ;k <= strlen(s[i]) ; k++ )
{
if(s[i][k] >='A' && s[i][k] <='Z')
s1[i][k] =s[i][k]+ ;
else s1[i][k] =s[i][k];
}
for(k = ;k <= strlen(s[i]) ; k++)//这段代码和上面重复,注意比较的是转化后的字符串,输出的是原字符串
{
if(s1[i][k] == testS1[j])
j ++;
else
j = ;
if(j >= len){
printf("%s\n",s[i]);
break;
}
}
}
}
return ;
}
CCF2014093字符串匹配(C语言版)的更多相关文章
- CCF201409-3 字符串匹配
问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行.你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符:当选项关闭时,表示同一个字母的大写和小写 ...
- C语言字符串匹配函数
C语言字符串匹配函数,保存有需要时可以用: #include <stdio.h> #include <stdlib.h> #include <string.h> # ...
- 字符串匹配KMP算法的C语言实现
字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD" ...
- C语言之基本算法41—字符串匹配问题
//字符串匹配问题 /* =============================================================== 题目:输入两字符串S,T,输出在S中存在但在T ...
- 数据结构(c语言版)代码
第1章 绪论 文档中源码及测试数据存放目录:数据结构\▲课本算法实现\▲01 绪论 概述 第一章作为绪论,主要介绍了数据结构与算法中的一些基本概念和术语.对于这些概念术语 ...
- 字符串匹配(KMP 算法 含代码)
主要是针对字符串的匹配算法进行解说 有关字符串的基本知识 传统的串匹配法 模式匹配的一种改进算法KMP算法 网上一比較易懂的解说 小样例 1计算next 2计算nextval 代码 有关字符串的基本知 ...
- 字符串匹配的KMP算法
~~~摘录 来源:阮一峰~~~ 字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串”BBC ABCDAB ABCDABCDABDE”,我想知道,里面是否包含另一个字符串”ABCDABD”? 许 ...
- 字符串匹配的KMP算法详解及C#实现
字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD" ...
- 字符串匹配与KMP算法实现
>>字符串匹配问题 字符串匹配问题即在匹配串中寻找模式串是否出现, 首先想到的是使用暴力破解,也就是Brute Force(BF或蛮力搜索) 算法,将匹配串和模式串左对齐,然后从左向右一个 ...
随机推荐
- 使用XML布局文件和Java代码混合控制UI界面
完全使用Java代码来控制UI界面不仅烦琐.而且不利于解耦:而完全利用XML布局文件来控制UI界面虽然方便.便捷,但难免有失灵活.因此有些时候,可能需要混合使用XML布局文件和代码来控制UI界面. 当 ...
- SVG的text使用
SVG的text使用: 参考:http://www.docin.com/p-7393979.html <%@ page language="java" contentType ...
- SQL server存储过程:数据的插入和更新
存储过程的功能非常强大,在某种程度上甚至可以替代业务逻辑层, 接下来就一个小例子来说明,用存储过程插入或更新语句. 1.数据库表结构 所用数据库为Sql Server2008. 2.创建存储过程 (1 ...
- PHP安全编程
转自:http://www.nowamagic.net/librarys/veda/detail/2076 1.关闭register_globals,以提高安全性 2.在部署环境,不要让不相关的人 ...
- ubuntu linux 设置环境变量
添加环境变量 1.添加临时变量 终端中输入: PATH="$PATH:yourpath" :yourpath是要添加的环境变量(即要添加目录的绝对路径,例:/home/myprog ...
- io的四个分类
1.首先是字节操作:InputStream和OutputStream 2.字符操作:Reader和Writer 3.磁盘操作:File 4.网络操作:scoket(不在java.io包)
- Kafka 0.10 Producer网络流程简述
1.Producer 网络请求 1.1 Producer Client角度 KafkaProducer主要靠Sender来发送数据给Broker. Sender: 该线程handles the sen ...
- 谨慎能捕千秋蝉(二)——CSRF
CSRF(Cross Site Request Forgery)跨站点请求伪造. CSRF的本质是当重要操作的参数都能被攻击者预测到,才能成功伪造请求. 一.场景演示 下图是一个伪造请求的场景,按顺序 ...
- block之--- 基本使用
block的类型:对象 官方文档描述如下 “Blocks are Objective-C objects, which means they can be added to collections l ...
- bzoj1492--斜率优化DP+cdq分治
显然在某一天要么花完所有钱,要么不花钱. 所以首先想到O(n^2)DP: f[i]=max{f[i-1],(f[j]*r[j]*a[i]+f[j]*b[i])/(a[j]*r[j]+b[j])},j& ...