• 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;
    }
    
  • 相关阅读:
    华为2016校园招聘上机笔试题
    android SQLite 使用
    handler
    fragment 给 activity 传数据
    activity 给 fragment 传递数据
    fragment (动态加载)
    fragment (静态)
    Java学习随笔之磨刀篇——环境搭建+问候世界
    Go语言设计哲学
    Ubuntu设置护眼程序
  • 原文地址:https://www.cnblogs.com/yuhan-blog/p/12308957.html
Copyright © 2020-2023  润新知