华为OD机试【前K个高频单词】

输入:

[“i”,“love”,“leetcode”,“i”,“love”,“coding”]

2

输出:

i

love

解析: “i” 和 “love” 为出现次数最多的两个单词,均为2次。注意,按字母顺序 “i” 在 “love” 之前。

考点 字符串 哈希表

#include <bits/stdc++.h>
using namespace std;

vector<string> split(string str) {//函数用于分割字符串后 将单词存入res数组中
    str = str.substr(1, str.size() - 2);
    vector<string>res;
    while (str.find(',')!=str.npos) {
        int p = str.find(',');
        string tmp = str.substr(2, p-3);
        res.push_back(tmp);
        str = str.substr(p+1);
    }
    res.push_back(str.substr(2,str.size()-4));
    return res;
}
void getmax(map<string, int>&mp) {//函数用于找值最大的key并输出
    int mx = 0;;
    string tmp;
    for (auto a : mp) {//找值最大的key
        if (a.second > mx) {
            mx = a.second;
            tmp = a.first;
        }
    }
    cout <<tmp <<endl;//输出key
    mp[tmp] = 0;//key对应的值置零
}
int main() {
    string s;
    map<string, int>mp;
    vector<string>init;
    getline(cin, s);
    int k = 0;
    cin >> k;
    init = split(s);
    for (int i = 0; i < init.size(); i++) {//将res内的单词记录在map中
        string b = init[i];
        mp[b]++;
    }
    for (int i = 0; i < k; i++) {//k的值为getmax函数执行次数
        getmax(mp);
    }
   
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务