LeetCode-079-WordSearch
1.题目:
单词搜索
给定一个二维网格和一个单词,找出该单词是否存在于网格中。
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
示例:
1 | board = |
2.解题:
首先这个类似于迷宫问题,当单词的第一个字母在board
匹配后,判断其位置的上下左右(考虑边界)是否可以匹配单词的下一个字母.我们为了实现这个过程,需要使用DFS.
由于同一个单元格内的字母不允许重复使用,因此我们需要使用额外的空间来记录被访问过的单元格.
现在我们来考虑递归退出条件.退出的情况无非两种:成功退出,当我们找到单词所有的字母时表示我们成功找到,此时使用一个计数器count
用来表示成功匹配的字母数,满足count == word.length()
;另一种情况就是找完所有情况不满足匹配,自动退出.
代码:
1 | class Solution { |