我正在尝试在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
是我需要跟踪的元素,以防万一没有匹配项。
我也想知道什么是最有效的方法。
为此,我认为算法是,首先我应该只匹配两个数组的起始元素,然后当它们匹配时才去匹配其他元素。
但是,我无法为此编写特定的代码。
如果有人可以帮助我,我将不胜感激。