Подсчет уникальных доменов из данного списка адресов электронной почты

Опубликовано: 19 Сентября, 2022

Дан массив 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 — количество уникальных доменов.

РЕКОМЕНДУЕМЫЕ СТАТЬИ