C语言 输入一组字符串,输出出现次数最多的字符串及其个数

C语言 输入一组字符串,输出出现次数最多的字符串及其个数

问题描述:

输入一个整数n(1 <= n <= 100)
然后输入n个字符串(长度 <= 1000 ,字符为小写)

输出出现次数最多的字符串及其个数,用空格隔开。

例如:

输入:

3
aaa
bb
bb

输出:

bb 2

问一下,这里是一个串全部是才可以,还是包含就可以?应该是第一种吧。

为大佬献上不一定AC的代码~不对的话大佬可以回复,本蒟蒻继续改~

#include <bits/stdc++.h>
using namespace std;
int main() {
	int n; cin >> n;
	map<string, int> mp;
	while (n--) {
		string s; cin >> s;
		bool flag = false;
		for (map<string, int> :: iterator it = mp.begin(); it != mp.end(); ++it) {
			if (it -> first == s) {
				++(it -> second); flag = true;
				break;
			}
		}
		if (!flag) {
			mp.insert(pair<string, int> (s, 1));
		}
	}
	int maxn = 0x800000000; string ma;
	for (map<string, int> :: iterator it = mp.begin(); it != mp.end(); ++it) {
		if (it -> second > maxn) {
			maxn = it -> second; ma = it -> first;
		}
	}
	cout << ma << '\n';
	return 0;
}

全部 ,必须一模一样

ok

谢谢您  我就一个学生  刚学不久 还有好多不懂 不过真是太感谢了