Анализ алгоритма
Объявим структуру данных map<string, int> m
, в которой будем подсчитывать сколько раз встретилось каждое слово. Затем следует найти слово, которое встретилось наибольшее число раз. Если таких слов несколько, то выводим лексикографически наибольшее.
Реализация алгоритма
В отображении m
подсчитаем сколько раз встретилось каждое слово.
map<string,int> m;
Читаем и подсчитываем слова.
cin >> n; for (i = 0; i < n; i++) { cin >> s; m[s]++; }
Находим слово res
, которое встречается наибольшее количество раз mx
.
mx = 0; for (auto x : m) { if (x.second >= mx) { mx = x.second; res = x.first; } }
Выводим слово с максимальной частотой и саму частоту.
cout << res << " " << mx << endl;
Java реализация
import java.util.*; public class Main { public static void main(String[] args) { Scanner con = new Scanner(System.in); TreeMap<String, Integer> tree = new TreeMap<String, Integer>(); int test = con.nextInt(); while(test-- > 0) { String s = con.next(); tree.put(s, tree.getOrDefault(s, 0) + 1); } int max = -1; String res = null; for(String s : tree.keySet()) { int n = tree.get(s); if (n >= max) { res = s; max = n; } } System.out.println(res + " " + max); con.close(); } }