• NOIP2011普及组统计单词数


    题目描述
    一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位
    置,有的还能统计出特定单词在文章中出现的次数。
    现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章
    中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,
    即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1),
    如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。
    【数据范围】
    1 ≤ 单词长度≤ 10。
    1 ≤ 文章长度≤ 1,000,000。
    【输入输出样例 1 说明】
    输出结果表示给定的单词 To 在文章中出现两次,第一次出现的位置为0。
    【输入输出样例 2 说明】
    表示给定的单词 to 在文章中没有出现,输出整数-1。
    输入格式
    第 1 行为一个字符串,其中只含字母,表示给定单词;
    第 2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。
    输出格式
    只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,
    分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字
    母在文章中的位置,位置从0 开始);如果单词在文章中没有出现,则直接输出一个整数-1。

    #include<map>
    
    #include<set>
    
    #include<cmath>
    
    #include<stack>
    
    #include<queue>
    
    #include<string>
    
    #include<vector>
    
    #include<fstream>
    
    #include<sstream>
    
    #include<stdio.h>
    
    #include<string.h>
    
    #include<iostream>
    
    #include<algorithm>
    
    #include<complex>
    
    #include<numeric>
    
    #include<cstring>
    
    #include<cstdio>
    
    #include<deque>
    
    #define ll long long
    
    #define rep(i,m,n) for(int i=m;i<n;i++)
    
    #define forn(i,n) for(int i=n;i>=1;i++)
    
    #define rt(a,n) sort(a,a+n)
    
    #define next(a,n) next_permutation(a,a+n)
    
    #define pii pair<int,int>
    
    #define ld long double
    
    #define pb push_back
    
    using namespace std;
    int ans1,ans;
    int main()
    {
        string s,z;
        getline(cin,z);
        getline(cin,s);
        for(int i=0;i<z.size();i++)
        {
            if(z[i]>='A' && z[i]<='Z')
                z[i]+=32;
        }
        for(int i=0;i<s.size();i++)
        {
            if(s[i]>='A' && s[i]<='Z')
                s[i]+=32;
        }
        bool f=false;
        for(int i=0;i<s.size()-z.size()+1;i++)
        {
            if(s.substr(i,z.size())==z && !f && (s[i-1]==' ' || i==0) && s[i+z.size()]==' ')
            {
                f=true;
                ans1=i;
                ans++;
            }
            else
                if(s.substr(i,z.size())==z && (s[i-1]==' ' || i==0) && s[i+z.size()]==' ')
                    ans++;
        }
        if(ans==0)
            cout<<-1;
        else
        cout<<ans<<" "<<ans1;
        return 0;
    }
  • 相关阅读:
    <<< List<HashMap<String, Object>> 及 HashMap<String, Object> 的用法
    <<< html图片背景平铺
    <<< javascript地址栏,代码
    Linux下常用目录有哪些?分别有什么作用?
    【Linux】Linux下进程间的通信方式
    【Linux】守护进程的定义,作用,创建流程
    【Linux】进程的结构,创建,结束,以及程序转化为的进程的过程
    【Linux】僵尸进程,孤儿进程以及wait函数,waitpid函数(有样例,分析很详细)
    【Linux】多线程同步的四种方式
    【Linux】多线程入门详解
  • 原文地址:https://www.cnblogs.com/NightRaven/p/9333264.html
Copyright © 2020-2023  润新知