问题
标题
字符串查找
类别
字符串处理
时间限制
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>
int main(){
char a[101],b[101][101];
int i=0,j=0,k=0,x[101]={0};
int flag=0,m=0,n=0;
gets(a);
scanf("%d\n%d",&flag,&m);
for(i=0;i<m;i++)
scanf("%s",&b[i]);
n=strlen(a);
if(flag==1)
for(i=0;i<m;i++){
k=0;
for(j=0;b[i][j]!='\0';j++){
if(a[k]==b[i][j]){
k++;
}
else
k=0;
while(k==n-1&&x[i]==0){
puts(b[i]);
x[i]=1;
break;
}
}
}
else {
for(i=0;i<m;i++){
k=0;
for(j=0;b[i][j]!='\0';j++){
if(a[k]==b[i][j]||a[k]==b[i][j]+32||a[k]==b[i][j]-32){
k++;
}
else
k=0;
while(k==n-1&&x[i]==0){
puts(b[i]);
x[i]=1;
break;
}
}
}
}
return 0;
}
别的100分代码
#include<stdio.h>
#include<string.h>
char tran(char a){
if(a<='z'&&a>='a') return a-32;
else if(a<='Z'&&a>='A') return a+32;
}
int main(){
int sen,n,i,j,k,l;
char s[101],ch[1000][101];
scanf("%s%d%d",s,&sen,&n);
for(i=0;i<n;i++) scanf("%s",ch[i]);
if(sen==1){
for(j=0;j<n;j++){//二重循环,在每一行中搜索s
for(k=0;k<strlen(ch[j])-strlen(s)+1;k++){//防溢出
l=0;//初始化在这里进行!
if(ch[j][k]==s[0]){
for(;l<strlen(s);l++){
if(ch[j][k+l]!=s[l]) break;
}
}
if(l==strlen(s)){
printf("%s\n",ch[j]);
break;
}
}
}
}
else if(sen==0){
for(j=0;j<n;j++){
for(k=0;k<strlen(ch[j])-strlen(s)+1;k++){
l=0;
if(ch[j][k]==s[0]||tran(ch[j][k])==s[0]){
for(;l<strlen(s);l++){
if(ch[j][k+l]!=s[l]&&tran(ch[j][k+l])!=s[l]) break;
}
}
if(l==strlen(s)){
printf("%s\n",ch[j]);
break;
}
}
}
}
return 0;
}
运行结果
输入样例
Hello
1
5
HelloWorld
HiHiHelloHiHi
GrepIsAGreatTool
HELLO
HELLOisNOTHello
输出样例
HelloWorld
HiHiHelloHiHi
HELLOisNOTHello
Hello
0
5
HelloWorld
HiHiHelloHiHi
GrepIsAGreatTool
HELLO
HELLOisNOTHello
HelloWorld
HiHiHelloHiHi
HELLO
HELLOisNOTHello
