Подсчет уникальных доменов из данного списка адресов электронной почты
Дан массив arr[] , содержащий N адресов электронной почты с разными доменами. Задача состоит в том, чтобы найти уникальные домены и их частоты из списка адресов электронной почты.
Примечание . Вхождение домена должно быть напечатано в лексикографическом порядке доменных имен.
Примеры:
Input: arr[] = { “rupesh@gmail.com”, “akole@yahoo.com”, “rupesh.21910879@viit.ac.in”,
“faculty.surname@viit.ac.in”, “Shyam@gmail.com”, “examcell@viit.ac.in”}
Output: gmail.com 2
viit.ac.in 3
yahoo.com 1
Explanation: Here the unique domains in lexicographical order from the list of emails are:
gmail.com, viit.ac.in, yahoo.com.
And their respective frequency in the list is 2, 3 and 1.Input: arr[] = {“geeks@geeksforgeeks.org”, “google@gmail.com”}
Output: geeksforgeeks.org 1
gmail.com 1
Подход: Решение задачи основано на следующей идее:
The domains of an email are mentioned after the ‘@’ symbol. So, find all the domains and store their frequencies.
Следуйте шагам, указанным ниже, чтобы реализовать идею:
- Инициализируйте карту для хранения частот каждого уникального домена в лексикографическом порядке доменных имен.
- Пересеките каждую из записей электронной почты:
- Для каждой записи найдите индекс (скажем, idx ) символа '@'.
- Подстрока, начинающаяся с idx+1 до конца строки, является доменным именем.
- Сохраните этот домен на карте и увеличьте его частоту на 1 .
- Повторите карту с самого начала (поскольку ключи уже отсортированы) и напечатайте доменные имена и их частоты.
Ниже приведена реализация описанного выше подхода.
Временная сложность: O(N * M), где M — средний размер строки.
Вспомогательное пространство: O(K), где K — количество уникальных доменов.