标题
字符串查找
类别
字符串处理
时间限制
2S
内存限制
256Kb
问题描述
给出一个字符串和多行文字,输出在这些文字中出现了指定字符串的行。
程序还需要支持大小写敏感选项:
当选项打开时,表示同一个字母的大写和小写看作不同的字符;
当选项关闭时,表示同一个字母的大写和小写看作相同的字符。
输入说明
输入数据第一行包含一个字符串s,由大小写英文字母组成,长度不超过100。
第二行包含一个数字,表示大小写敏感选项。当数字为0时表示大小写不敏感,当数字为1时表示大小写敏感。
第三行包含一个整数n,表示给出的文字行数。
接下来n行,每行包含一个字符串,字符串由大小写英文字母组成,不含空格和其他字符。每个字符串长度不超过100。
输出说明
输出多行,每行包含一个字符串,按出现的顺序依次给出那些包含了字符串s的行。
输入样例
Hello
1
5
HelloWorld
HiHiHelloHiHi
GrepIsAGreatTool
HELLO
HELLOisNOTHello
输出样例
HelloWorld
HiHiHelloHiHi
HELLOisNOTHello
#include<stdio.h>
#include<string.h>
char change(char a)
{
if(a>='a'&&a<='z')
return a-32;
else if(a>='A'&&a<='Z')
return a+32;
}
int main()
{
char a[100],b[1000][100];
int n,sen,i,j,k;
scanf("%s%d%d",a,&sen,&n);
for(i=0;i<n;i++)
{
scanf("%s",b[i]);
}
if(sen==1)
{
for(i=0;i<n;i++)
{
for(j=0;j<strlen(b[i])-strlen(a)+1;j++)
{
k=0;
if(b[i][j]==a[0])
{
for(;k<strlen(a);k++)
{
if(b[i][k+j]!=a[k])
break;
}
}
if(k==strlen(a))
{
puts(b[i]);
break;
}
}
}
}
else if(sen==0)
{
for(i=0;i<n;i++)
{
for(j=0;j<strlen(b[i])-strlen(a)+1;j++)
k=0;
if(b[i][j]==a[0]||change(b[i][j])==a[0])
{
for(;k<strlen(a);k++)
{
if(b[i][j+k]!=a[k]||change(b[i][j+k])!=a[k])
break;
}
}
if(k==strlen(a))
{
puts(b[i]);
break;
}
}
}
}
if(k==strlen(a))
等于0的情况下,是否满足条件。