zoukankan      html  css  js  c++  java
  • 字符串--P1308 统计单词数

    题目描述

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

    现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章

    中的某一独立单词在不区分大小写的情况下完全相同(参见样例1 ),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2 )。

    输入输出格式

    输入格式:

    共2行。

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

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

    输出格式:

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

    AC代码:

    #include <string>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    int main() {
        int counter = 0, startIndex = -1;
        string goal;
        string origial;
        string temp;
        //可以接收带空格的string,没别的函数可以接收带空格的string
        getline(cin, goal);
        getline(cin, origial);
        transform(goal.begin(), goal.end(), goal.begin(), ::tolower);
        transform(origial.begin(), origial.end(), origial.begin(), ::tolower);
        string::iterator it = origial.begin();
        while (it != origial.end()) {
            //以空格分隔取单词
            temp = origial.substr(it - origial.begin(), find(it, origial.end(), ' ') - it);
            if (goal.compare(temp) == 0) {
                ++counter;
                if (counter == 1)
                    startIndex = (int) (it - origial.begin());
            }
            it += max(temp.size(), (size_t) 1);
        }
        if (startIndex >= 0)
            cout << counter << ' ';
        cout << startIndex;
        return 0;
    }
    

    学到的点

    1 getline(cin, goal);可以接收带空格的string,没别的函数可以接收带空格的string
    2 transform()大小写转换函数
    3 substr()字符串截取函数,返回子串
    4 find()查找字符函数,返回迭代器,若无,返回end()
    5 max()求最大值,要求输入参数相同类型
    6 compare()比较是否相等,相等返回0

  • 相关阅读:
    Add函数求两个数的和,不能使用+号或其它算术运算符
    小刘同学的第八十六篇博文
    小刘同学的第八十五篇博文
    小刘同学的第八十四篇博文
    小刘同学的第八十三篇博文
    小刘同学的第八十二篇博文
    小刘同学的第八十一篇博文
    小刘同学的第八十篇博文
    小刘同学的第七十九篇博文
    小刘同学的第七十八篇博文
  • 原文地址:https://www.cnblogs.com/sunqiangstyle/p/10312285.html
Copyright © 2011-2022 走看看