Как эффективно искать 2D-массив внутри 2D-массива? - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь найти 2D-массив внутри 2D-массива, и я попробовал следующий код для этого:

loopX: for (int x = 0; x < str1.length - str2.length + 1; ++x)
            loopY: for (int y = 0; y < str1[x].length - str2[0].length + 1; ++y)
            {
                for (int xx = 0; xx < str2.length; ++xx)
                for (int yy = 0; yy < str2[0].length; ++yy)
                {
                    if (str1[x + xx][y + yy] != str2[xx][yy])
                    {
                        k++;
                        continue loopY;

                    }
                }

                // Found the submatrix!
                System.out.println("Found at: " + x + " " + y);
                break loopX;
            }
            System.out.println(k);

В этом коде str1 - это большой 2D-массив, внутри которого япытаюсь найти и сопоставить меньший 2D массив str2.Оба являются char массивами.

k - это элемент, который мне нужно отслеживать в случае отсутствия совпадения.

Я также хотел бы знать, что может быть наиболееэффективный способ сделать это.

Для этого алгоритма я подумал, что сначала я должен сопоставить только начальный элемент обоих массивов, а когда они совпадают, тогда только идут и совпадают с другими элементами.

Но я не могу написать конкретный код для этого.

Буду признателен, если кто-нибудь поможет мне в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...