• CCF CSP 201409-3 字符串匹配


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

    思路:

    1.设第一行字符串的长度为len,每行字符串进行比较的时候,取出长度为len的字串进行比较;
    2.大小写敏感用strcmp比较,不敏感用stricmp比较,它们包含在头文件<cstirng>里;

    代码:

    #define IOS ios_base::sync_with_stdio(0); cin.tie(0);
    #include<iostream>
    #include<cstring>
    using namespace std;
    string s;
    int isSen,n;
    bool contain(string str){
    	int end=str.length()-s.length(),flag=false;
    	for(int i=0;i<=end&&!flag;i++){
    		if(isSen) flag=!strcmp(s.c_str(),str.substr(i,s.length()).c_str());
    		else flag=!stricmp(s.c_str(),str.substr(i,s.length()).c_str());
    	}
    	return flag;
    }
    int main(){
    	IOS;
    	cin>>s>>isSen>>n;
    	for(int i=0;i<n;i++){
    		string str;
    		cin>>str;
    		if(contain(str)) cout<<str<<"
    ";
    	}
    	return 0;
    }
    
  • 相关阅读:
    <大学祭>
    使用rest方式修改服务端xml文件
    tsql的奇特语法
    Dandelion
    正则中关于修饰符g以及exec和match区别的一个小demo
    如何将一个盒子在显示在浏览器的正中间
    Js中的this指向问题
    CSS通过边框border-style来写小三角
    用单例模式封装常用方法 utils class v1.0
    JS中检测数据类型的四种方法
  • 原文地址:https://www.cnblogs.com/yuhan-blog/p/12308956.html
Copyright © 2020-2023  润新知