LeetCode刷题笔录Word Search
来源:互联网 发布:java wait 和await 编辑:程序博客网 时间:2024/06/05 20:59
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 =
[ ["ABCE"], ["SFCS"], ["ADEE"]]word =
"ABCCED"
, -> returns true
,word =
"SEE"
, -> returns true
,word = "ABCB"
, -> returns false
.
这题好像除了用DFS暴力搜索没什么别的好办法。
用两层循环,对每一个字符进行一个DFS,而且可以往4个方向走。
另外用一个boolean[][] visited来记录当前字符是否被visit过。注意在递归后要重置visited。
public class Solution {public boolean exist(char[][] board, String word) {int rowLimit = board.length;int colLimit = board[0].length;boolean[][] visited = new boolean[rowLimit][colLimit];for (int i = 0; i < rowLimit; i++) {for (int j = 0; j < colLimit; j++) {if (recursive(board, word, 0, i, j, rowLimit, colLimit, visited))return true;}}return false;}public boolean recursive(char[][] board, String word, int index, int row,int col, int rowLimit, int colLimit, boolean[][] visited) {if (index == word.length())return true;// out of boundsif (row < 0 || col < 0 || row >= rowLimit || col >= colLimit)return false;// at a visited nodeif (visited[row][col])return false;// the two chars do not matchif (board[row][col] != word.charAt(index))return false;// dfsvisited[row][col] = true;boolean result = recursive(board, word, index + 1, row + 1, col,rowLimit, colLimit, visited)|| recursive(board, word, index + 1, row - 1, col, rowLimit,colLimit, visited)|| recursive(board, word, index + 1, row, col + 1, rowLimit,colLimit, visited)|| recursive(board, word, index + 1, row, col - 1, rowLimit,colLimit, visited);visited[row][col] = false;return result;}}
0 0
- LeetCode刷题笔录Word Search
- LeetCode刷题笔录 Search Insert Position
- LeetCode刷题笔录Word Break
- LeetCode刷题笔录Word Break II
- LeetCode刷题笔录Word Break II
- LeetCode刷题笔录 Validate Binary Search Tree
- LeetCode刷题笔录Unique Binary Search Trees
- LeetCode刷题笔录Search a 2D Matrix
- LeetCode刷题笔录Search in Rotated Sorted Array
- LeetCode刷题笔录Unique Binary Search Trees II
- LeetCode刷题笔录Recover Binary Search Tree
- LeetCode刷题笔录Search in Rotated Sorted Array II
- LeetCode刷题笔录Recover Binary Search Tree
- LeetCode刷题笔录Length of Last Word
- [leetcode刷题系列]Word Search
- Leetcode刷题笔录 Anagrams
- LeetCode刷题笔录 Permutaions
- LeetCode刷题笔录Combinations
- VC++动态链接库(DLL)编程深入浅出
- 编写一个标准strlen函数
- Java Drp项目实战—— 环境搭建
- Web性能优化方案
- Sum Root to Leaf Numbers leetcode
- LeetCode刷题笔录Word Search
- 设计模式之命令模式
- <转载>notepad++ 关联tpl文件,并且高亮显示
- PBS 命令
- string、stringbuilder、stringBuffer的区别
- Unity3D的纹理贴图循环运动
- hdu 2955 Robberies(01背包)
- Unity3D多线程写法
- PLSQL developer 连接不上64位Oracle 的解决方法