我正在研究一种在单词拼图网格上找到单词的方法。
字母放在矩阵中。该方法应该打印出行和列,找到该单词的第一个字母和该模式进入的方向(n,s,e,w,ne,nw,se,sw)。
我目前的方法是:
public static String wordSearch(int r, int c, String letters, String search){
int x[] = { -1, -1, -1, 0, 0, 1, 1, 1 };
int y[] = { -1, 0, 1, -1, 1, -1, 0, 1 };
char [][] puzzle = new char [r][c];
int count = 0;
for (int i = 0; i < r; i++){
for (int j = 0; j < c; j++){
puzzle[i][j] = letters.charAt(count);
count++;
}
}
int length = search.length();
for (int dir = 0; dir < 8; dir++)
{
int k;
int rd = r + x[dir];
int cd = c + y[dir];
for (k = 1; k < length; k++)
{
rd += x[dir];
cd += y[dir];
}
if (k == length)
return rd+ ", "+cd;
}
return "Not found";}
问题是找出如何返回模式的方向以及单词的第一个字母(它只传递了一个测试用例)。但是,我确信该方法可以判断该单词是否在网格中。
答案 0 :(得分:0)
最直接的方法是定义一个捕获您想要返回的所有数据的类。例如:
public class Result {
int row;
int col;
int direction;
}
然后,如果找到搜索词,请创建此类的新实例并将其返回。如果找不到搜索词,只需返回null
即可。请注意,您必须将方法的返回类型从String
更改为Result
。
我不打算对您当前代码的检测逻辑发表评论,除非注意到它没有正确测试任何内容。它还冒着投掷ArrayIndexOutOfBoundsException
的风险,因为你没有检查你是否正在逃离谜题的边缘。
或者,您可以继续将所有内容编码为String
并返回三元素字符串:return rd + ", " + rc + ", " + dir;
。