Постановка задачи :

Вам дан отсортированный (в лексическом порядке) словарь чужого языка. Напишите функцию, которая находит порядок символов в инопланетном языке. Этот словарь будет предоставлен вам в виде массива строк под названием «словарь» размера «N».

Дано

3
a aa aaa

Вывод:

True

Объяснение данных тестовых случаев:

For the test case, the words are 'a', 'aa', and 'aaa'. Since the only unique character here is 'a', so the array to be returned will just be ['a']. The 'true' that is being printed just signifies that the output returned by the function is valid.

Подход :

Топологическая сортировка

Здесь, если мы рассмотрим ["wrt", "wrf", ....] первые два слова из словаря инопланетян, то, взглянув на первое несоответствие в символах, мы получим важную информацию о порядке их появления!

Это означает, что из двух приведенных выше слов мы можем сказать, что «t» предшествует «f»! Мы можем обозначить это отношение как «t» → «f».

Мы можем представить это отношение с помощью ориентированного графа!

Следовательно,

  • Переберите все слова и постройте график, представляющий указанное выше отношение. Все отдельные символы будут вершинами графа, тогда как отношение, отображающее, какой символ предшествует другому символу, будет направленным ребром.
  • Выполните топологическую сортировку над построенным графом и верните один из возможных порядков для него.

Временная сложность: O(N+K)
Пространственная сложность: O(K)

Код :

Спасибо за чтение

Placewit воспитывает лучших инженеров, предоставляя интерактивные занятия в классе и помогая им развивать свои навыки и попадать в замечательные компании.

Узнайте больше на Placewit. Следите за нами в Instagram и Facebook для ежедневного обучения.