gpt4 book ai didi

Java wordsearch方法,搜索给定的二维数组

转载 作者:行者123 更新时间:2023-12-02 13:31:47 24 4
gpt4 key购买 nike

我正在尝试将一个单词传递给我的 findWord 方法,该方法检查 stype String[][] "a"的二维数组中是否有所述单词。行和列是“a”的维度。我不检查对角线或反向,只检查向前。我相信我的逻辑几乎(如果不是全部)都是正确的,但我认为我遇到了边界错误。没有抛出任何错误,但是代码在应该返回 true 的随机情况下返回 false,从而无法正常工作。代码编译并运行良好。 (即它检查存在的列数)

public boolean findWord(String word)  {
int cL = column;
for(int i = 0; i < row; i++) {
for(int j = 0; j < column; j++) {
if(a[i][j].equals(word.substring(0,1))) {
int c = 1;
int parameter = j + word.length();
if(parameter <= cL) {
for(int k = j; k < parameter; k++) {
if(!a[i][k].equals(word.substring(c,c+1)))
return false;
c++;
}
return true;
}
} else {
return false;
}
}
}
return true;
}

最佳答案

我已经运行了一些测试用例。我还没有发现您的方法返回 true 的情况,尽管该单词在数组中。

我在您的代码中发现的缺陷是:

您开始查找a[0][0]。如果此处找到的字符串不等于单词的第一个字母,您将立即返回 false,无需进一步查找。

假设该单词的第一个字母与 a[0][0] 匹配。现在您将 c 设置为 1,但由于 ik 为 0,您现在将单词的第二个字母与 a 进行比较[0][0]。这不太可能匹配。它只会以相同字母开头的单词出现两次。

最后,我确实设法得到了 StringIndexOutOfBoundsException,即通过在包含 ab< 的行中搜索 aa/c。第二次通过最内层循环时,c 为 2,因此您尝试取出长度为 2 的单词的索引 2 和 3 之间的子字符串。

您需要进行一些修复。享受你的工作。

关于Java wordsearch方法,搜索给定的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43160233/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com