首页 > 其他分享 >说话方式

说话方式

时间:2023-09-14 20:35:50浏览次数:31  
标签:说话 哈希 方式 单词 这道题 && 字符串 include

说话方式

1. 题目地址

    https://www.acwing.com/problem/content/1559/

2. 题目解析

    这道题主要就是给定一个字符串,求出字符串中出现次数最多的单词。

3. 题解

    首先,来讲述一下这道题的思路:
        1.  由于这道题中的字符串含有空格,因此我们不能用cin接收,而应该用getline函数来接收。
        2.  接收完之后,我们应该抠出字符串当中的单词(使用双指针算法,具体思想可以参考之前的博客),将单词存储在哈希表当中,并记录次数。
        3.  最后,遍历一遍哈希表,找出出现次数最多的单词即可。(还需要考虑题目中的字典序情况)

4. 代码

#include <iostream>
#include <cstdio>
#include <unordered_map>

using namespace std;

//将string进行哈希,并存储字符串的个数
unordered_map<string,int> h;

//判断字符是否为字母,数字。
bool check(int c){
    if(c >= '0' && c <= '9') return true;
    if(c >= 'A' && c <= 'Z') return true;
    if(c >= 'a' && c <= 'z') return true;
    return false;
}

//将大写字母转换成小写字母
char to_lower(int c){
    if(c >= 'A' && c <= 'Z'){
        return c + 32;
    }
    return c;
}

string str;

int main(){
    getline(cin,str);
    //抠出字符串中的单词,并存储在h表中
    for(int i = 0; i < str.size(); i ++){
        if(check(str[i])){
            string word = "";
            int j = i;
            while(j < str.size() && check(str[j])){
                word += to_lower(str[j++]);
            }
            h[word]++;
            i = j;
        }
    }
    int cnt = -1;
    string word;
    //遍历哈希表,得出答案
    for(auto item : h){
        string per_word = item.first;
        int number = item.second;
        //两个条件:1.  如果遍历的单词出现次数更大,更新。
        //         2.  或者次数相等,遍历的单词字典序更小,更新。
        if(cnt < number || cnt == number && word > per_word){
            cnt = number;
            word = per_word;
        }
    }
    
    cout << word << " " << cnt << endl;
    
    return 0;
}

标签:说话,哈希,方式,单词,这道题,&&,字符串,include
From: https://www.cnblogs.com/gao79135/p/17703368.html

相关文章

  • 本地开发部署方式
           如果担心你拉取到别人的代码,或者别人拉取到你的,配置false就可以 ......
  • 拼多多面试题解析:Java实现继承的七种方式!
    大家好,我是小米!今天,我要和大家一起来深入探讨一下拼多多的面试题:Java实现继承有哪7种方式?这是一个相当有深度的问题,不过别担心,我会尽力以通俗易懂的方式给大家讲解清楚,让大家对Java继承有更深刻的理解。什么是继承在Java编程中,继承是一种非常重要的概念,它允许一个类(子类/派......
  • mybatis查询大批量数据的几种方式
    问题背景公司里有很多需要跑批数据的场景,这些数据几十万到几千万不等,目前我们采用的是分页查询,但是分页查询有个深度分页问题,上百万的数据就会查询的很慢常规解决方案全量查询分页查询流式查询游标查询1.全量查询默认情况下,全量查询的话系统会把所有结果集存储在内存中......
  • JS 的6种加载方式
    一、正常模式<scriptsrc="index.js"></script>这种情况下JS会阻塞dom渲染,浏览器必须等待index.js加载和执行完成后才能去做其它事情二、async模式<scriptasyncsrc="index.js"></script>async模式下,它的加载是异步的,JS不会阻塞DOM的渲染,async加载是无顺序......
  • Lucene分页方式(转)
    推荐的做法是为每一次分页导航都执行一次新的查询。因为Hits中保存的并不是真正的Document,因此可以通过HIts.doc(index)的方式取出在一定范围内的Document。在获得Hits后可以用类似下面的方法进行分页处理:privateListprocessHits(Hitshits,intstartIn......
  • 探索未来的人机交互方式
    在21世纪,人工智能(AI)已成为科技领域的重要焦点,特别是在“生成式AI”这个细分领域中。所谓的“生成式AI”是指能够创造、理解和生成各种形式内容的人工智能系统。本文将重点探讨“生成式AI”报告中的重点词汇或短语,为您解析它的潜力与未来。一、生成式AI的背景近年来,随着深度学习和自......
  • 使用python进行数据同步,根据游标的方式
    使用python进行数据同步,根据游标的方式一、介绍:数据同步分为好几种,比如根据最大id排序,其次才是根据游标进行排序。为什么不使用最大id进行数据同步?如下:因为如果数据表中的数据是按照降序排序的,那么每次根据最大id取1000条数据的方式也是一种可行的分页查询方式。这种方式的优......
  • Learn Git in 30 days——第 17 天:关于合并的基本观念与使用方式
    写的非常好的一个Git系列文章,强烈推荐原文链接:https://github.com/doggy8088/Learn-Git-in-30-days/tree/master/zh-cn 我曾在【第08天:关于分支的基本观念与使用方式】提过关于「分支」的基本观念与用法,现在则要来讲「合并」如何进行。由于Git是一种分布式版本控制系统(......
  • 关于 SAP UI5 扩展标准应用的两种方式
    SAPUI5提供了两种方式来让应用开发人员对标准SAPUI5应用进行扩展:SAPUI5Flexibility:这种方式是扩展SAPFioriElements应用程序(基于SAPUI51.56或更高版本)的首选方式。它使用更好的界面,支持分层(layering)以及生命周期hook.ComponentConfiguration:这种方......
  • Apache Iceberg 表有哪些性能优化方式
    ApacheIceberg是一种开源的分布式数据表格格式,旨在提供可扩展性、性能和数据一致性。它建立在ApacheHadoop的基础上,并支持多种数据湖存储(如HadoopHDFS、AmazonS3等)。为了优化ApacheIceberg表的性能,可以采取多种策略和技术,以下是一些重要的性能优化方式和详细示例:Partition......