Word Search
第28天。
今天的题目是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.
For example,
Given board =
1 | [ |
word = “ABCCED”, -> returns true,
word = “SEE”, -> returns true,
word = “ABCB”, -> returns false.
这道题想起来不难,就是有点繁琐,有几个要点需要考虑:
- 每个元素只能用一次
- 字符只要求是临接的,即可能有四个方向需要考虑。
因为每个元素只能用一次,所以我们需要一个方式来记录这个位置是否被使用,简单的方法就是直接用一个二维数组来记录,然后我们需要考虑是否越过边界:
1 | bool search(vector<vector<char> > &board,vector<vector<bool> > &used,string &word,int beg,int i,int j) { |
上面的方法使用了一个二维数组来记录元素是否被使用,其实可以直接在board
中记录是否被使用:
1 | int m; |