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

统计单词数
一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。
现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。
注意:匹配单词时,不区分大小写,但要求完全匹配, 即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例 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;
}

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

时间: 2024-10-16 05:00:23

JSK-27321 统计单词数【字符串】的相关文章

洛谷 P1308 统计单词数【字符串+模拟】

P1308 统计单词数 题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置.注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章 中的某一独立单词在不区分大小写的情况下完全相同(参见样例1 ),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2 ). 输入输出格式 输入格式: 输入文件

HDU 2072 单词数 --- 字符串处理

/* HDU 2072 单词数 --- 字符串处理 */ #include <cstdio> //C语言改成stdio.h即可 #include <cstring> //C语言改成string.h即可 const int maxn = 85; int main() { char *head1, *head2; char a[maxn]; char b[maxn][maxn]; int i, k, len, cnt1, cnt2; while (gets(a)){ //遇到字符串&q

Ruby中定义wc方法来统计单词数和行数等

在Ruby中我们定义一个wc方法,用来统计文件中出现的文本行数.单词数和字符数,ruby代码程序如下: def wc(filename)   nline = nword = nchar = 0   File.open(filename) do |io|     io.each_line do |line|       words = line.split(/\s+/).reject{|w| w.empty? }       #本例中使用了split方法分割单词,当行首有空白字符时,split方法

洛谷-统计单词数-简单字符串

题目描述 Description 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数.  现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置.注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章 中的某一独立单词在不区分大小写的情况下完全相同(参见样例1 ),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2 ). 输入输出格式 Input/out

【基础练习】【字符串处理】noip2011普及组第2题 统计单词数题解

这又是一道成功加入"容易吗"系列的基础题= =原本很简单,可是我一开始太大意看错了题,以为是让输出该单词是第几个单词,实际上应该输出该单词的首字母在第几个位置:改过后只得了二十分,看了一组数据,原来第一个单词前面可以有前导空格--幸亏其他单词前没有,否则还真不知道怎么办:实现的时候又出了各种问题.于是我决定总结一下. 题目: 给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置.注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大

解题报告 『统计单词数(字符串)』

原题地址 字符串入门题,因为完全不擅长所以还是WA了好几次才过. 还犯了一个⑨错误,果然做题时不应该听<チルノのパーフェクトさんすう教室>…… 代码如下: #include <bits/stdc++.h> using namespace std; void write(int x) { if (x < 0) { putchar('-'); x = -x; } if (x > 9) write(x / 10); putchar(x % 10 + '0'); } int m

第六章 第一个Linux驱动程序:统计单词个数 心得笔记

一.Linux系统将每个驱动都映射成一个文件.这些文件称为设备文件或驱动文件,都保存在/dev目录中.这使得与Linux驱动进行交互就向与普通文件进行交互一样容易.大多数Linux驱动都有与其对应的设备文件,因此与Linux驱动交换数据变成与驱动设备交换数据. 二.编写Linux驱动程序 1.建立Linux驱动骨架           Linux内核在使用驱动时需要装载与卸载驱动        装载驱动:建立设备文件.分配内存地址空间等:module_init 函数处理驱动初始化        

一个简单的Linux驱动程序:统计单词个数

Linux驱动和普通的Linux API 没本质区别,只是二者使用方式不同. Linux系统将每一个驱动都映射成一个文件,即设备文件,保存在/dev目录中. Linux驱动编写关键在于回调函数编写. 编写Linux驱动程序的步骤: 建立Linux驱动骨架(装载和卸载Linux驱动):即驱动的装载和卸载: 注册和注销设备文件:即创建和移除设备: 指定驱动相关信息:驱动程序是自描述的: 指定回调函数:做好数据接收响应: 编写业务逻辑:Linux驱动的核心部分,由多个函数.多个文件或者多个Linux驱

Android深度探索(卷1)HAL与驱动开发 第六章 第一个Linux驱动程序:统计单词个数

Android深度探索(卷1)HAL与驱动开发 第六章 第一个Linux驱动程序:统计单词个数 统计单词个数的功能是封装在Linux驱动中的. Linux驱动的工作和访问方式是Linux亮点之一,同时受到了业界大防范好评.Linux系统将每一个驱动都映射成一个文件.这些文件称为设备文件或者驱动文件,都保存在 /dev 目录中.这种设计理念使得与Linux驱动进行交互就像与普通文件进行交互一样容易.当然,也比访问Linux API 更容易.由于大多数Linux驱动都有与其对应的设备文件,因此与Li