我有一个String[][]
数组,例如
h,b,c,d
e,e,g,h
i,l,k,l
m,l,o,p
我需要将 ArrayList 与此数组进行匹配,以找到 ArrayList 中指定的单词。搜索 word时,我需要得到肯定匹配和字母的位置,hello
例如在这种情况下(0,0)
, (1,1)
,(2,1)
和。(3,1)
(3,2)
当一个字母一个字母地查找时,我们假设我们成功地找到了第一个l
字母,程序应该尝试在l
它旁边的位置找到下一个字母( )。所以它应该匹配 e、e、g、k、o、l、m 和 i 表示它周围的所有字母:水平、垂直和对角线。在单词中找不到相同的位置两次,因此(0,0)
, (1,1)
, (2,1)
,(2,1)
和(3,2)
是不可接受的,因为该位置(2,1)
匹配了两次。l
在这种情况下,两者都将匹配单词,因为允许对角位置,但由于要求一个位置不能多次使用,所以它需要匹配另一个。
这种情况也应该匹配
h,b,c,d
e,e,g,h
l,l,k,l
m,o,f,p
如果我们假设我们尝试搜索helllo
,它将不匹配。要么匹配,(x1, y1) (x1, y1)
要么(x1, y1) (x2, y2) (x1, y1)
无法匹配。
我想知道实现这种功能的最佳方式是什么。如果我String[][]
在 ArrayList 中有 4x4 数组和 100 000 个单词,那么最有效和最简单的方法是什么?