码迷,mamicode.com
首页 > Web开发 > 详细

JSK-27321 统计单词数【字符串】

时间:2018-10-04 21:33:12      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:class   整数   库函数   之间   printf   串匹配   方便   question   单词   

统计单词数
一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。
现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。
注意:匹配单词时,不区分大小写,但要求完全匹配, 即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例 1), 如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例 2)。
输入格式
第 1 行为一个字符串,其中只含字母,表示给定单词;
第 2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。
输出格式
只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字 母在文章中的位置,位置从 0 开始);如果单词在文章中没有出现,则直接输出一个整数 ?1。
数据规模与约定
1≤ 单词长度 ≤10;
1≤ 文章长度 ≤1,000,000。
输出时每行末尾的多余空格,不影响答案正确性
样例输入1
To
to be or not to be is a question
样例输出1
2 0
样例输入2
to
Did the Ottoman Empire lose its power at that time
样例输出2
-1
题目来源
NOIP 2011 普及组

提示
样例 1 中输出结果表示给定的单词 To 在文章中出现两次,第一次出现的位置为 0。
样例 2 中表示给定的单词 to 在文章中没有出现,输出整数 -1。

问题链接JSK-27321 统计单词数
问题描述:(略)
问题分析
????这是一个字符串匹配问题,可以有多种解法。
????一种做法是使用字符串匹配函数strstr()来解,这时候单词和文本字符串两端都先加上一个空格,然后再进行匹配。这样做比较方便,能够确保正确切分单词。也可单纯用字符串匹配的方法来实现。
程序说明:(略)
参考链接:(略)
题记:能用库函数则用库函数。

AC的C语言程序如下:

/* JSK-27321 统计单词数 */

#include <stdio.h>
#include <ctype.h>
#include <string.h>

#define N 10
#define N2 1000000

char word[N + 3], text[N2 + 3];

int main(void)
{
    gets(word + 1);
    gets(text + 1);

    int i;
    for(i = 1; word[i]; i++)
        if(isupper(word[i]))
            word[i] = tolower(word[i]);
    for(i = 1; text[i]; i++)
        if(isupper(text[i]))
            text[i] = tolower(text[i]);

    int cnt = 0, firstpos, len;
    len =  strlen(text + 1) + 1;
    text[0] = ' ', text[len] = ' ', text[len + 1] = '\0';
    len = strlen(word + 1) + 1;
    word[0] = ' ', word[len] = ' ', word[len + 1] = '\0';

    char *pos = text;
    while(*pos) {
        pos = strstr(pos, word);
        if(pos == NULL)
            break;
        else {
            if(++cnt == 1)
                firstpos = pos - text;
            pos += len;
        }
    }

    if(cnt == 0)
        printf("-1\n");
    else
        printf("%d %d\n", cnt, firstpos);

    return 0;
}

JSK-27321 统计单词数【字符串】

标签:class   整数   库函数   之间   printf   串匹配   方便   question   单词   

原文地址:https://www.cnblogs.com/tigerisland45/p/9743279.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!