CCF-训练50题-NO.6-字符串匹配问题

来源:互联网 发布:合同翻译软件 编辑:程序博客网 时间:2024/06/14 00:54

题目描述

给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。

输入

输入的第一行包含一个字符串S,由大小写英文字母组成。 

  第二行包含一个数字,表示大小写敏感的选项,当数字为0时表示大小写不敏感,当数字为1时表示大小写敏感。 

  第三行包含一个整数n,表示给出的文字的行数。 

  接下来n行,每行包含一个字符串,字符串由大小写英文字母组成,不含空格和其他字符。

输出

 输出多行,每行包含一个字符串,按出现的顺序依次给出那些包含了字符串S的行。


代码

#include <iostream>using namespace std;int main(){string example;string res;cin>>example;int l=example.size();bool judge;cin>>judge;int n;cin>>n;string *p=new string[n];    int pd=0;    int time=0;    int chu=1;for (int i=0;i<n;i++) cin>>p[i];for (int i=0;i<n;i++){int length=p[i].size();for (int j=0;j<length-l+1;j++){for(int k=j;k<j+l;k++){int o=k-j;if (judge==0){if (((p[i][k]-'a')==(example[o]-'A'))||((p[i][k]-'A')==(example[o]-'a'))||p[i][k]==example[o])  pd++; else {pd=0;break; }}else{if (p[i][k]==example[o]) pd++;else{pd=0;break;}}}if (pd==l){    time++;    if (time==1) cout<<p[i];else cout<<endl<<p[i];    pd=0;break;}   }    }return 0;}


原创粉丝点击