79. Word Search**
https://leetcode.com/problems/word-search/
闲扯: 这几天都在看<临高启明>, 没有坚持写题, 不是意志力的问题, 只怪小说太好看 ????
题目描述
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.
Example:
C++ 实现 1
DFS + Backtracing. 从 board
中的每个字符开始, 通过 DFS 寻找一个字符串和 word
相等. 这要保证寻找到的字符串每个字符和 word
中的每个字符依次相等. 由于 board
的字符访问过后不能再次访问了, 因此使用额外的 visited
数组记录哪些字符已经被访问了. 使用 k
来遍历 word
中的字符.
在 dfs
函数中, 有如下情况返回 false
:
-
board
访问越界; -
k
访问word
越界; -
board[i][j]
: 当前访问的字符已经被访问过; -
board[i][j]
与word[k]
不相等;
只有当 k
指向 word
的最后一个字符并且满足 word[k] == board[i][j]
时, 才返回 true
.
另外 Backtracing 时需要将 visited[i][j]
重置为 false
.
C++ 实现 2
比 C++ 实现 1
快很多.