【发布时间】:2014-10-07 23:20:55
【问题描述】:
我有以下代码从左到右搜索下面的字符网格以查找单词。这非常有效。
// 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 <= 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
【问题讨论】:
-
我认为更简单的方法是调用原始方法并将字符串反转。
new StringBuilder(x).reverse().toString()应该可以带你到那里。
标签: java search multidimensional-array