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或蛮力搜索) 算法,将匹配串和模式串左对齐,然后从左向右一个 ...
随机推荐
- flex chrome浏览器调试flex程序
flex chrome浏览器调试出现空白的解决方法: 1,为chrome安装flash player,禁用chrome自带的flash player:参考:http://www.jb51.net/ar ...
- PHP上传图片重命名6种方案
一. 适用场景:无法使用从数据库中返回的自增长数字,给上传图片重命名.这是图片或文件上传的流程决定的.一般图片上传处理过程是,先上传图片到服务器,重命名之后,插入到数据库.也就是说,在数据库中非常容易 ...
- Bootstrap 按钮分组
Bootstrap 按钮分组: <!DOCTYPE html> <html lang="en"> <head> <meta charset ...
- servlet中的8个Listener
servlet中的8个Listener: Xml: <?xml version="1.0" encoding="UTF-8"?> <web-a ...
- vue原来可以这样上手
今儿与一群友讨论vue相关问题让我思量极深,1.我们是否在争对性解决问题或者说是帮助别人:2.我们是否在炫耀自己的技能.以下是被戏剧化的对白: "群友":最近按照vue官网示例学习 ...
- C# 汉字转拼音 将中文转换成拼音
//建立一个公共类,用于转换汉字 public class ChnToPh { //定义拼音区编码数组 private static int[] getValue = new int[] { -,-, ...
- 用Spark学习FP Tree算法和PrefixSpan算法
在FP Tree算法原理总结和PrefixSpan算法原理总结中,我们对FP Tree和PrefixSpan这两种关联算法的原理做了总结,这里就从实践的角度介绍如何使用这两个算法.由于scikit-l ...
- Linux Platform驱动模型(一)-设备信息
我在Linux字符设备驱动框架一文中简单介绍了Linux字符设备编程模型,在那个模型中,只要应用程序open()了相应的设备文件,就可以使用ioctl通过驱动程序来控制我们的硬件,这种模型直观,但是从 ...
- DB2函数大全
DB2函数大全 函数名 函数解释 函数举例 AVG() 返回一组数值的平均值. SELECTAVG(SALARY)FROMBSEMPMS; CORR(),CORRELATION() 返回一对数值的关系 ...
- 关于sleep()和interrupt()及主线程和线程
看代码 public class TestSleep { public static void main(String args[]) throws InterruptedException{ Thr ...