• 字符串--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

  • 相关阅读:
    Example of Formalising a Grammar for use with Lex & Yacc
    TCL脚本语言基础介绍
    linux环境下的c++编程
    如何利用FPGA进行时序分析设计
    可移植的配置visual studio工程第三方库
    [转]windows10 1703 鼠标右键打开命令提示符cmd
    重载和const形参的学习心得
    华为codecraft2018总结
    【转】C/C++使用心得:enum与int的相互转换
    C++学习笔记1-使用数组进行vector初始化
  • 原文地址:https://www.cnblogs.com/sunqiangstyle/p/10312285.html
Copyright © 2020-2023  润新知