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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 保研夏令营被拒怎么办 小学生去英国游学怎么办签证 医生说我湿气重怎么办 喉咙痛有来医生感冒喉咙痛怎么办 暴马丁香叶子卷怎么办 房产权40年以后怎么办 面试回答不了考官的问题怎么办 轻伤事故对方要钱太多我怎么办 退休后有房子住公积金怎么办 江苏副高评过不聘怎么办 抗环瓜氨酸肽抗体高怎么办 脚被磨破了好痛怎么办 脚磨破皮肿了怎么办 脚磨破皮发炎了怎么办 3个月婴儿流口水怎么办 beats耳机被偷了怎么办 beats X耳机丢了怎么办 头戴耳机戴着热怎么办 长时间戴耳机耳朵疼怎么办 手表秒针走得声音很大怎么办 顾客总找老板剪头发怎么办 马来西亚国籍想去中国怎么办 有限元学位课挂了怎么办 五百丁简历导出后不一样怎么办 面试早到了1小时怎么办 头顶头发会越来越少怎么办 vr游戏过后想吐怎么办 win10电脑不能打汉字怎么办 手机看vr特别烫怎么办 苹果手机浏览器横屏怎么办 苹果笔记本浏览器没有了怎么办 剑与家园魔镜带错兵怎么办 橙子vr上下反了怎么办 我的恐龙手机不支持ar怎么办 被小人陷害又无计可施怎么办 蚂蚁借呗2万逾期怎么办 蚂蚁借呗还款金额受限怎么办 蚂蚁借呗不能借钱了怎么办 美柚手机号换了怎么办 美柚他他圈被禁言了怎么办? 被蝎子蜇了屁股怎么办