思路:命里有时终须有,命里无时莫强求。
单词搜索
http://www.nowcoder.com/practice/987f2981769048abaf6180ed63266bb2
public class Solution {
public boolean exist(String[] strs, String word) {
char[][] board = new char[strs.length][strs[0].length()];
for (int i = 0; i < strs.length; i++) board[i] = strs[i].toCharArray();
for (int i = 0; i < strs.length; i++) {
for (int j = 0; j < strs[0].length(); j++) {
if (dfs(board, word.toCharArray(), i, j, 0)) return true;
}
return false;
}
}
public boolean dfs(char[][] board, char[] word, int i, int j, int k) {
if (i >= board.length || i < 0 || j >= board[0].length || j < 0 || board[i][j] != word[k]) return false;
if (k == word.length - 1) return true;
board[i][j] = '\0';
boolean res = dfs(board, word, i + 1, j, k + 1) || dfs(board, word, i - 1, j, k + 1) || dfs(board, word, i, j + 1, k + 1) || dfs(board, word, i, j - 1, k + 1);
board[i][j] = word[k];
return res;
}
}