// 2017.4.26
// Given a 2D board and a word, find if the word exists in the grid.
// The word can be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or vertically neighboring. The same letter cell may not be used more than once.
// For example,
// Given board =
// [
// ['A','B','C','E'],
// ['S','F','C','S'],
// ['A','D','E','E']
// ]
// word = "ABCCED", -> returns true,
// word = "SEE", -> returns true,
// word = "ABCB", -> returns false.
public boolean exist(char[][] board, String word) {
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) {
if (recursionBoard(board, i, j, word, 0)) {
return true;
}
}
}
return false;
}
boolean recursionBoard(char[][] board,int x,int y,String word,int start) {
if (start >= word.length()) {
return true;
}
if (x < 0 || x >= board.length || y < 0 || y >= board[x].length) {
return false;
}
if (word.charAt(start++) == board[x][y]) {
char c = board[x][y];
board[x][y] = '*';
boolean res = recursionBoard(board, x - 1,y,word,start) ||
recursionBoard(board, x + 1,y,word,start) ||
recursionBoard(board, x,y - 1,word,start) ||
recursionBoard(board, x,y + 1,word,start);
board[x][y] = c;
return res;
}
return false;
}
给出单词,只能连续上下左右移动二维数组,看是否能拼接出改单词
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 小学语文修改病句的方法 修改病句是小学语文考试中常见的题型,在修改病句之前,我们应该清晰的了解有哪些病句现象,下面...