79. Word Search

Posted wangyufeiaichiyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了79. Word Search相关的知识,希望对你有一定的参考价值。

题目链接:https://leetcode.com/problems/word-search/

 

解题思路:

这个题目和剑指offer上的路径问题是一样的,今天再次复习一下写法。

 1 class Solution 
 2     public boolean exist(char[][] board, String word) 
 3         
 4         int row = board.length;
 5         int column = board[0].length;
 6         
 7         char [] str = word.toCharArray();
 8         
 9         boolean [][]flag = new boolean[row][column];
10         
11         for(int i=0;i<row;i++)
12         
13             for(int j=0;j<column;j++)
14             
15                 if(judge(board,i,j,row,column,flag,str,0))////循环遍历二维数组,找到起点等于str第一个元素的值,再递归判断四周是否有符合条件的----回溯法
16                     return true;
17             
18         
19         return false;
20         
21     
22     
23     public boolean judge(char[][] board,int i,int j,int row,int column,boolean [][]flag,char[] str,int k)
24     
25         if(i<0 || j<0 || i>=row || j>=column || board[i][j] != str[k] || flag[i][j] == true)
26             return false;
27         ////若k已经到达str末尾了,说明之前的都已经匹配成功了,直接返回true即可
28         if(k==str.length-1)
29             return true;
30         ////要走的第一个位置置为true,表示已经走过了
31         flag[i][j] = true;
32         
33         ////回溯,递归寻找,每次找到了就给k加一,找不到,还原
34         if(judge(board,i+1,j,row,column,flag,str,k+1)||
35           judge(board,i,j+1,row,column,flag,str,k+1)||
36           judge(board,i-1,j,row,column,flag,str,k+1)||
37           judge(board,i,j-1,row,column,flag,str,k+1))
38         
39             return true;
40         
41         ////走到这,说明这一条路不通,还原,再试其他的路径
42         flag[i][j] = false;
43         return false;
44         
45     
46 

 

以上是关于79. Word Search的主要内容,如果未能解决你的问题,请参考以下文章

79. Word Search

79. Word Search

LeetCode79. Word Search

79. Word Search

79. Word Search

79. Word Search