Я пытаюсь найти 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
- это элемент, который мне нужно отслеживать в случае отсутствия совпадения.
Я также хотел бы знать, что может быть наиболееэффективный способ сделать это.
Для этого алгоритма я подумал, что сначала я должен сопоставить только начальный элемент обоих массивов, а когда они совпадают, тогда только идут и совпадают с другими элементами.
Но я не могу написать конкретный код для этого.
Буду признателен, если кто-нибудь поможет мне в этом.