【问题标题】:Java Word Search Puzzle in Char Array字符数组中的 Java 单词搜索难题
【发布时间】:2018-04-12 16:00:48
【问题描述】:

我正在研究一种在单词拼图网格上查找单词的方法。

字母被放在一个矩阵中。该方法应该打印出找到单词的第一个字母的行和列以及模式进入的方向(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";}

问题是找出如何返回模式的方向以及单词的第一个字母(它只通过了一个测试用例)。但是,我确信该方法可以判断单词是否在网格中。

【问题讨论】:

    标签: java arrays matrix methods


    【解决方案1】:

    最直接的方法是定义一个类来捕获你想要返回的所有数据。例如:

    public class Result {
        int row;
        int col;
        int direction;
    }
    

    然后,如果您找到搜索词,则创建此类的新实例并返回它。如果没有找到搜索词,则返回null。请注意,您必须将方法的返回类型从 String 更改为 Result

    我不会评论您当前代码的检测逻辑,只是要注意它没有正确测试任何东西。它也有可能抛出ArrayIndexOutOfBoundsException,因为你没有检查你是否跑出了拼图的边缘。

    或者,您可以继续将所有内容编码为 String 并返回一个三元素字符串:return rd + ", " + rc + ", " + dir;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-06
      • 1970-01-01
      • 2019-02-12
      • 2011-08-23
      • 2013-01-31
      • 1970-01-01
      • 2011-06-15
      相关资源
      最近更新 更多