P1308 [NOIP2011 普及组] 统计单词数(洛谷)
本文最后更新于 270 天前,其中的信息可能已经有所发展或是发生改变。

题目描述

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

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

输入格式

共 2 行。

第 1 行为一个字符串,其中只含字母,表示给定单词;

第 2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。

输出格式

一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从 0 开始);如果单词在文章中没有出现,则直接输出一个整数 −1。

注意:空格占一个字母位

输入输出样例

输入

To
to be or not to be is a question

输出

2 0

输入

to
Did the Ottoman Empire lose its power at that time

输出

-1

做这个题之前要补充一个函数的知识点find函数

find函数的使用

C++中的find函数_c++ find-CSDN博客

tolower/toupper 函数讲解<ctype.h>函数

tolower/toupper 函数讲解<ctype.h>函数_lower函数头文件-CSDN博客

ac代码

#include <bits/stdc++.h>
using namespace std;
int main()
{
    string a;
    string b;
    getline(cin,a);
    getline(cin,b);
    for (int i=0;i<a.length();++i){
        a[i]=tolower(a[i]);//小写
    }
    for (int i=0;i<b.length();++i){
        b[i]=tolower(b[i]);
    }
    a=' '+a+' ';//保证所读取的函数不包括在其他单词中
    b=' '+b+' ';
    if (b.find(a)==string::npos){
        cout<<-1<<endl;
    }
    else {
        int alpha=b.find(a);
        int beta=b.find(a),s=0;
        while (beta!=string::npos){
            s++;
            beta=b.find(a,beta+1);//每查找一次更新一次位置 直到停止
        }
        cout<<s<<" "<<alpha<<endl;
    }
    return 0;
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇