说话方式
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;
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);
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;
if(cnt < number || cnt == number && word > per_word){
cnt = number;
word = per_word;
}
}
cout << word << " " << cnt << endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现