如何有效地在2D数组中搜索2D数组?

时间:2018-11-24 08:17:31

标签: java multidimensional-array

我正在尝试在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是我需要跟踪的元素,以防万一没有匹配项。

我也想知道什么是最有效的方法。

为此,我认为算法是,首先我应该只匹配两个数组的起始元素,然后当它们匹配时才去匹配其他元素。

但是,我无法为此编写特定的代码。

如果有人可以帮助我,我将不胜感激。

0 个答案:

没有答案