我有一个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 个单词,那么最有效和最简单的方法是什么?