Проверьте, встречаются ли слова в данном предложении на основе заданного шаблона
Учитывая шаблон « шаблон » и предложение « s », задача состоит в том, чтобы проверить, встречаются ли слова в данном предложении на основе шаблона, представленного в « шаблоне ».
Примеры :
Input: pattern = “abba”, s = “geeks for for geeks”
Output: true
Explanation: In the pattern, ‘a’ denotes ‘geeks’ and ‘b’ denotes ‘for’. Therefore, sentence ‘s’ follows the pattern ‘pattern’Input: pattern = “abc”, s = “geeks for geeks”
Output: false
Подход : Данная проблема может быть решена путем обобщения шаблона, образованного словами в данном предложении и символами в данном шаблоне . Затем просто проверьте, совпадают ли обобщенный шаблон и данный шаблон или нет. Выполните следующие шаги, чтобы решить проблему:
- Создайте карту для хранения каждого слова и присвойте значение каждому уникальному слову в зависимости от его появления .
- Пример: для предложения «гики для гиков» карта будет [{«гики», 0}, {«для», 1}]
- Точно так же сопоставьте появление каждого символа в шаблоне.
- Затем сопоставьте индекс шаблона по индексу на обеих картах и распечатайте результат.
Ниже приведена реализация вышеуказанного подхода:
Сложность по времени : O(NlogN), так как мы вставляем элементы в карту и находим значения из карты внутри цикла.
Вспомогательное пространство : O(N), так как мы используем дополнительное пространство для карты.