zoukankan      html  css  js  c++  java
  • CCF 字符串匹配(find()函数的使用)

    问题描述
    试题编号: 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。
    #include<bits/stdc++.h>
    using namespace std;
    int n;
    string s1,s2;
    void solve(string &s)
    {
        for(int i=0;i<s.size();i++){ 
            if(s[i]>='A'&&s[i]<='Z') 
                s[i]=s[i]-'A'+'a';
        } 
    }
    int main()
    {
        int flag;
        while(cin>>s1){
            scanf("%d",&flag);
            if(flag){
                scanf("%d",&n);
                for(int i=0;i<n;i++){
                    cin>>s2;
                    if(s2.find(s1)!=s2.npos)//npos是一个很大的数,表示不存在 
                        cout<<s2<<endl;
                }
            }
            else{
                solve(s1);
                scanf("%d",&n);
                for(int i=0;i<n;i++){
                    cin>>s2;
                       string s3=s2;
                    solve(s2);
                    if(s2.find(s1)!=s2.npos)//如果s2中存在s1 
                        cout<<s3<<endl;
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    670. Maximum Swap
    653. Two Sum IV
    639. Decode Ways II
    636. Exclusive Time of Functions
    621. Task Scheduler
    572. Subtree of Another Tree
    554. Brick Wall
    543. Diameter of Binary Tree
    535. Encode and Decode TinyURL
    博客园自定义背景图片
  • 原文地址:https://www.cnblogs.com/freinds/p/6446167.html
Copyright © 2011-2022 走看看