程序打印出重复次数最多的单词。如果有两个以上不是最重复的单词,我该如何打印“ ---”?目前只能使用2个字。
如果输出为:2苹果香蕉,则打印“ ---”
输入:5个苹果苹果香蕉苹果香蕉
输出:苹果
如何使它像这样:
输入:4苹果苹果香蕉香蕉
输出:“ ---”
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
void most_repeated_word(int n)
{
using mmap = map<string, int>; mmap freq;
string word;
for (int i = 0; i < n; i++)
{
cin >> word;
freq[word]++;
}
auto it = max_element(begin(freq), end(freq), []
(const mmap::value_type& a, const mmap::value_type& b)
{ return a.second < b.second; });
if ((it == end(freq)) || (it->second < 2))
cout << "---" << endl;
else
cout << it->first << endl;
}
int main() {
int n;
while (cin >> n)
{
if (n < 1 && n > 100000) return 0;
most_repeated_word(n);
}
system("pause");
}
答案 0 :(得分:0)
一旦达到最大值,请计算相似性元素的数量:
auto value = it->second;
auto count = count_if(begin(freq), end(freq), [&]
(const mmap::value_type& a)
{return a.second == value;});
如果count
中的数量超过1,则打印'---':
if (it->second < 2 || count != 1)
cout << "---" << endl;
else
cout << it->first << endl;