Аналіз алгоритму
Оголосимо структуру даних 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(); } }