79. Word Search
Medium
2421130FavoriteShare
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:
board = [ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E'] ] Given word = "ABCCED", return true. Given word = "SEE", return true. Given word = "ABCB", return false.
Accepted
353,472
Submissions
1,074,965
class Solution {
public:
bool exist(vector<vector<char>>& board, string word) {
int row=board.size();
int col=board[0].size();
//bool visited[row][col]={false};
vector<vector<bool>> visited(row,vector<bool>(col,false));
bool tp;
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
if(dfs(board,word,0,visited,i,j)) return true;
}
}
return false;
}
bool dfs(vector<vector<char>>& board,string word,int temp,vector<vector<bool>>& visited,int x,int y){
if(temp==word.size()) return true;
if(x<0||y<0||x>=board.size()||y>=board[0].size()){
return false;
}
if(visited[x][y]==true) return false;
if(board[x][y]!=word[temp]) return false;
visited[x][y]=true;
bool tmp=dfs(board,word,temp+1,visited,x-1,y)||dfs(board,word,temp+1,visited,x,y-1)||dfs(board,word,temp+1,visited,x+1,y)||dfs(board,word,temp+1,visited,x,y+1);
visited[x][y]=false;
return tmp;
}
};
本文深入解析了WordSearch算法,该算法能在二维字符网格中查找指定单词。通过深度优先搜索(DFS)策略,逐个检查网格中与目标单词匹配的可能性,避免重复使用相同单元格中的字母。文章详细阐述了算法实现过程,包括如何初始化访问标记矩阵,以及递归地进行路径探索。
1111

被折叠的 条评论
为什么被折叠?



