题目描述[原题链接][https://leetcode-cn.com/problems/word-search/]
给定一个二维网格和一个单词,找出该单词是否存在于网格中。
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
示例:
board =
[
[‘A’,’B’,’C’,’E’],
[‘S’,’F’,’C’,’S’],
[‘A’,’D’,’E’,’E’]
]给定 word = “ABCCED”, 返回 true.
给定 word = “SEE”, 返回 true.
给定 word = “ABCB”, 返回 false.
算法描述
首先要再网格中找到起点,遍历整个二维网格,使用网格中的每一个单词跑一遍dfs,找到起点后,每次能向其他三个方向遍历,所以将当前字符置为'.'
,然后向每个方向dfs,结束后需要回溯,将之前修改的字符,修改回来,bb[x][y]=word[u]
最后返回结果;
C++代码
1 | class Solution { |
Java代码
1 | class Solution { |