79. 单词搜索
题目描述:
给定一个二维网格和一个单词,找出该单词是否存在于网格中。
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
示例:
1 | board = |
解题思路:
由于是路径判断的题目类型,需要顺序推进,那么肯定是要深度遍历DFS的做法了。
在设计的时候,我们知道已经遍历了的坐标需要标记,进行剪枝操作。并且同一单元格内的字母不允许重复使用。然而如果这个支路遍历了发现这个字母不相等,但之前的字母可能在另外一条支路的遍历延伸中又转回来了。
例如:在该 3 * 4 的数组中寻找一个字符串 ABCESEEEFS

这就需要用到回溯思想了,如果一条节点临近的多个节点都可以访问,也就是分支时,判断后续是否可以完全跑通,跑不通我们应该将hasVisit数组的堵塞的支路的坐标对其复原。
解题代码:
1 | public class WordSearch79 { |