Максимальна частота слів#6940

Максимальна частота слів (Розбір)

Аналіз алгоритму

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