По заданной двумерной сетке символов и слова найдите все вхождения данного слова в сетке. Слово может быть найдено во всех 8 направлениях в любой точке. Говорят, слово можно найти в направлении, если все символы совпадают в этом направлении (не в зигзагообразной форме).
8 направлений: горизонтально влево, горизонтально вправо, вертикально вверх и 4 диагональных направления.
Пример:
Input: grid[][] = {"GEEKSFORGEEKS", "GEEKSQUIZGEEK", "IDEQAPRACTICE"}; word = "GEEKS" Output: pattern found at 0, 0 pattern found at 0, 8 pattern found at 1, 0 Input: grid[][] = {"GEEKSFORGEEKS", "GEEKSQUIZGEEK", "IDEQAPRACTICE"}; word = "EEE" Output: pattern found at 0, 2 pattern found at 0, 10 pattern found at 2, 2 pattern found at 2, 12
Ниже на диаграмме показана увеличенная сетка и наличие в ней разных слов.
Источник: Microsoft Интервью Вопрос
Идея, используемая здесь, проста, мы проверяем каждую ячейку. Если ячейка имеет первый символ, то мы один за другим пробуем все 8 направлений из этой ячейки на совпадение. Реализация интересная, хотя. Мы используем два массива x [] и y [], чтобы найти следующий ход во всех 8 направлениях.
Ниже приведена реализация того же.
|
Джава
|
C #
|
Выход:
pattern found at 0, 0 pattern found at 0, 8 pattern found at 1, 0 pattern found at 0, 2 pattern found at 0, 10 pattern found at 2, 2 pattern found at 2, 12
Упражнение: Приведенное выше решение печатает только места слова. Расширьте его, чтобы напечатать направление, в котором присутствует слово.
Смотрите это для решения упражнений.
Эта статья предоставлена Уткаршем Триведи . Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме
Рекомендуемые посты:
- Проверьте, существует ли слово в сетке или нет
- Преобразовать строку в квадратную матрицу символов
- Поиск подстроки Anagram (или поиск всех перестановок)
- Двоичное дерево поиска | Набор 1 (поиск и вставка)
- Подсчитать возможные перемещения в заданном направлении в сетке
- Максимальная сумма в сетке 2 xn, так что нет двух соседних элементов
- Минимальная сумма падающего пути в сетке NxN
- Найдите N x N сетку, у которой xor каждой строки и столбца равен
- Минимальное расстояние до конца сетки от источника
- Максимальный периметр квадрата в 2D сетке
- Считайте магические квадраты в сетке
- Уникальные дорожки в сетке с препятствиями
- Крупнейший связанный компонент в сетке
- Наименьшее расстояние между двумя ячейками в матрице или сетке
- Минимальные затраты на покрытие заданных позиций в сетке N * M
0.00 (0%) 0 votes