Word Search
2015-10-30 02:01
267 查看
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 =
word =
word =
word =
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 class Solution { // recursion public boolean exist(char[][] board, String word) { if(board == null || board.length == 0) return false; if(word.length() == 0) return true; for(int i = 0; i< board.length; i++){ for(int j=0; j< board[0].length; j++){ if(board[i][j] == word.charAt(0)){ boolean rst = find(board, i, j, word, 0); if(rst) return true; } } } return false; } private boolean find(char[][] board, int i, int j, String word, int start){ if(start == word.length()) return true; if (i < 0 || i>= board.length || j < 0 || j >= board[0].length || board[i][j] != word.charAt(start)){ return false; } board[i][j] = '@'; // should remember to mark it boolean rst = (find(board, i-1, j, word, start+1) || find(board, i, j-1, word, start+1) || find(board, i+1, j, word, start+1) || find(board, i, j+1, word, start+1)); board[i][j] = word.charAt(start); return rst; }
相关文章推荐
- programming-challenges Bee Maja (111204) 题解
- 夺命雷公狗jquery---46查找操作
- Android对Bitmap的内存优化
- HDU-1069-DP-Monkey and Banana
- js插件使用整理
- HDU 1754 I Hate It
- Git 教程(二) git 的基本构成及原理
- 获取当前的URL
- Session
- Swift 编程思想 阅读笔记
- Flask -- 路由
- C++中的关键字用法---typename
- Windows7 GNS3 模拟路由器成功PING通网外
- 基于AssetBundle的客户端资源
- Android merge优化UI
- 项目冲刺--第四天
- 论坛总结
- 多渠道打包资源
- 夺命雷公狗jquery---45包裹操作
- LintCode "k Sum" !!