class Solution {
private:
int m;
int n;
bool dfs(vector<vector<char>>& board,int i,int j,string word)
{
if(word.size()==0)//如果要搜索的词长度为0就返回存在
return true;
else if(i<0||i>=m||j<0||j>=n||board[i][j]!=word[0])//如果超出了边界 或者i,j位置上的词不等于word[0]返回不存在
return false;
else
{
string sub=word.substr(1);
char c=board[i][j];
board[i][j]='*';
bool ret;
ret=dfs(board,i-1,j,sub)||dfs(board,i+1,j,sub)||dfs(board,i,j-1,sub)||dfs(board,i,j+1,sub);//寻找四个方向
board[i][j]=c;
return ret;
}
}
public:
bool exist(vector<vector<char>>& board, string word) {
m=board.size();
n=board[0].size();
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
{
if(dfs(board,i,j,word))
return true;
}
return false;
}
};
79. Word Search
最新推荐文章于 2021-02-28 03:28:35 发布