zoukankan      html  css  js  c++  java
  • CCF CSP 201409-3 字符串匹配

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址

    CCF CSP 201409-3 字符串匹配

    问题描述

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

    输入格式

      输入的第一行包含一个字符串S,由大小写英文字母组成。
      第二行包含一个数字,表示大小写敏感的选项,当数字为0时表示大小写不敏感,当数字为1时表示大小写敏感。
      第三行包含一个整数n,表示给出的文字的行数。
      接下来n行,每行包含一个字符串,字符串由大小写英文字母组成,不含空格和其他字符。

    输出格式

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

    样例输入

    Hello
    1
    5
    HelloWorld
    HiHiHelloHiHi
    GrepIsAGreatTool
    HELLO
    HELLOisNOTHello

    样例输出

    HelloWorld
    HiHiHelloHiHi
    HELLOisNOTHello

    样例说明

      在上面的样例中,第四个字符串虽然也是Hello,但是大小写不正确。如果将输入的第二行改为0,则第四个字符串应该输出。

    评测用例规模与约定

      1<=n<=100,每个字符串的长度不超过100。

    代码

    C++

    #include <iostream>
    #include <cctype>
    using namespace std;
    
    int main() {
        string a;
        cin >> a;
        bool casesen;
        cin >> casesen;
        int N;
        cin >> N;
        for(int n=0; n<N; n++) {
            string b;
            cin >> b;
            bool found = false;
            for(int i=0; i<=b.size()-a.size(); i++) {
                int j;
                for(j=0; j<a.size(); j++) {
                    if(casesen) {
                        if(a[j]!=b[i+j]) break;
                    }
                    else {
                        if(tolower(a[j])!=tolower(b[i+j])) break;
                    }
                }
                if(j==a.size()) {
                    found = true;
                    break;
                }
            }
            if(found) cout << b << endl;
        }
    }
  • 相关阅读:
    React Native组件之Text
    React Native的组件ListView
    React Native中的网络请求fetch和简单封装
    解决FileUpload上传大文件报错
    以EF形式操作mysql数据库
    以ADO形式操作mysql数据库
    Docker
    Docker创建镜像文件并在容器中运行
    WIN10下的Docker安装
    MySQL安装
  • 原文地址:https://www.cnblogs.com/meelo/p/7693567.html
Copyright © 2011-2022 走看看