【问题标题】:How would I modify my code to search a multidimensional array diagonally from left to right and right to left?我将如何修改我的代码以从左到右和从右到左对角搜索多维数组?
【发布时间】:2014-12-03 11:06:50
【问题描述】:

我有这段代码用于从左到右和从右到左搜索多维数组。

我现在需要做的是从左上到右下,从右上到左下,从左下到右上,从右下到左上搜索数组。

我需要对现有方法进行哪些更改才能创建一种新方法来做我想做的事情?

            // Left to Right
            public static String findLeftToRight (char[][]board, String word) {
                char[] letters = word.toCharArray();

                for (int i = 0; i < board.length; i++){
                    for (int j = 0; j < board[i].length; j++) {
                        boolean found = true;

                        for (int k = 0; k < letters.length; k++) {
                            if ((j+k >= board[i].length) || (letters[k] != board[i][j+k])) {
                                found = false;
                                break;
                            }
                        }

                        if (found) {
                            return "String " + word + " found in row=" + i + " col=" +j;
                        }
                    }
                }
                return "String " + word + " not found";
            } // end findLeftToRight

            // Right to Left
            public static String findRightToLeft (char[][]board, String word) {
                char[] letters = word.toCharArray();

                for (int i = board.length-1; i > -1; i--){
                    for (int j = board[i].length-1; j > -1; j--) {
                        boolean found = true;

                        for (int k = 0; k < letters.length; k++) {
                            if ((j - k < 0) || (letters[k] != board[i][j-k])) {
                                found = false;
                                break;
                            }
                        }

                        if (found) {
                            return "String " + word + " found in row=" + i + " col=" +j;
                        }
                    }
                }
                 return "String " + word + " not found";
            } // end findLeftToRight

【问题讨论】:

    标签: java arrays search matrix multidimensional-array


    【解决方案1】:

    所以我假设你的多维数组是一个立方体意味着行和列的长度相同。

    从左上角到右下角 用 board[i][i] 比较你想要的;

    右上角到左下角将是 相同的 for 循环,但与 board[length-i][i]

    比较

    对于从左到右上方的机器人将是 与 board[i][length-i]

    比较

    对于从右到左上角的机器人将是 与板比较[length-i][length-i]

    它们都在从 i 到长度的 for 循环中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-10
      • 2018-07-01
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-07
      相关资源
      最近更新 更多