zoukankan      html  css  js  c++  java
  • AC日记——统计单词数 openjudge 1.12 5

    05:统计单词数

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

    一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。

    现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。

    输入
    2 行。
    第 1 行为一个字符串,其中只含字母,表示给定单词;
    第 2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。
    输出
    只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从0开始);如果单词在文章中没有出现,则直接输出一个整数-1。
    样例输入
    样例 #1:
    To
    to be or not to be is a question
    
    样例 #2:
    to
    Did the Ottoman Empire lose its power at that time
    样例输出
    样例 #1:
    2 0
    
    样例 #2:
    -1
    来源
    NOIP2011复赛 普及组 第二题

    思路:

      大模拟;

    来,上代码:

    #include<map>
    #include<set>
    #include<queue>
    #include<cstdio>
    #include<string>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    
    using namespace std;
    
    int len_start,len_now,times_all=0,ans=0,ans_first=0x7fffffff;
    
    char start[1000001],now[1000001];
    
    void if_ok(int now_)
    {
        if((now_==0||now[now_-1]==' ')&&(now[now_+len_start]==0||now[now_+len_start]==' '))
        {
            bool if_add=true;
            for(int i=0;i<len_start;i++)
            {
                if(now[now_+i]==start[i]) continue;
                if_add=false;
                break;
            }
            if(if_add)
            {
                ans++;
                ans_first=min(ans_first,now_);
            }
        }
    }
    
    inline void char_(char &char__)
    {
        if(char__>='A'&&char__<='Z') char__+=32;
    }
    
    int main()
    {
        gets(start);
        gets(now);
        len_start=strlen(start),len_now=strlen(now);
        for(int i=0;i<len_start;i++) char_(start[i]);
        for(int i=0;i<len_now;i++) char_(now[i]);
        //printf("%s
    ",start);
        //printf("%s
    ",now);
        for(int i=0;i<=len_now-len_start;i++)
        {
            if(now[i]==start[0]) if_ok(i);
        }
        if(ans==0) printf("-1
    ");
        else printf("%d %d
    ",ans,ans_first);
        return 0;
    }
  • 相关阅读:
    PAT A1094 The Largest Generation (25 分)——树的bfs遍历
    PAT A1055 The World's Richest (25 分)——排序
    PAT A1052 Linked List Sorting (25 分)——链表,排序
    PAT A1076 Forwards on Weibo (30 分)——图的bfs
    辅导员
    辅导员面试
    C程序设计
    Excel VBA 基本概念
    Excel函数
    导入excel表的数据到数据库ssh
  • 原文地址:https://www.cnblogs.com/IUUUUUUUskyyy/p/6128086.html
Copyright © 2011-2022 走看看