字符矩阵内单词搜索
创始人
2024-05-13 18:49:19
0

单词搜索

问题链接:word search!!!
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。

单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用

示例 1:
在这里插入图片描述

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"
输出:true

示例 2:
在这里插入图片描述

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "SEE"
输出:true

示例 3:
在这里插入图片描述

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCB"
输出:false

解题思路

深度优先搜索:先找到方格中字符串的开头字符,然后进行深度优先搜索算法,判断是否能够搜索到长度达到指定word长度的字符串。

代码样例

int x[4]={0,1,0,-1},y[4]={1,0,-1,0};
bool dfs(vector>& board,vector>& used,string& word,int index,int i,int j){if(index>=word.length()){return true;}int m=board.size(),n=board[0].size();bool temp=false;for(int orient=0;orient<4;orient++){int _x=i+x[orient],_y=j+y[orient];if(_x<0||_x>=m||_y<0||_y>=n){continue;}if(!used[_x][_y]&&board[_x][_y]==word[index]){used[_x][_y]=true;temp=dfs(board,used,word,index+1,_x,_y);if(temp){break;}used[_x][_y]=false;}}return temp;
}
bool exist(vector>& board, string word) {int m=board.size(),n=board[0].size();vector> used(m,vector(n));for(int i=0;ifor(int j=0;jif(board[i][j]==word[0]){used[i][j]=true;bool temp=dfs(board,used,word,1,i,j);if(temp){return true;}used[i][j]=false;}}}return false;
}

代码分析
深度优先搜索算法的退出条件、继续搜索条件和边界条件。

//1
if(index>=word.length()){return true;
}
//2
if(!used[_x][_y]&&board[_x][_y]==word[index]){
//3
int _x=i+x[orient],_y=j+y[orient];
if(_x<0||_x>=m||_y<0||_y>=n){continue;
}

这里在定义深度优先搜索函数时需要注意传值传引用的区别,这样是对board、used、word等变量进行传引用bool dfs(vector>& board,vector>& used,string& word,int index,int i,int j)。如果将其改成传值的形式(bool dfs(vector> board,vector> used,string word,int index,int i,int j))会导致算法超时,难以在限制的时间内执行完测试样例。
按照以上算法可以击败大多数人的提交程序。
在这里插入图片描述

相关内容

热门资讯

我的初一生活作文800字(优... 我的初一生活作文800字 篇一初一生活,是我人生中的一段重要时光。刚升入初中的我,面对新环境和新生活...
我的烦恼作文800字初一【精... 我的烦恼作文800字初一 篇一我对自己的学习成绩感到很烦恼。尽管我努力学习,但总是无法取得理想的成绩...
残缺也美丽初中作文【精简5篇... 残缺也美丽初中作文 篇一残缺也美丽人生如同一场旅行,每个人都扮演着不同的角色,经历着不同的风景。有时...
我的眼里只有你优秀作文(经典... 我的眼里只有你优秀作文 篇一在我的眼里,只有你是最优秀的。你是我最敬爱的人,也是我最佩服的人。无论是...
经典议论文(最新6篇) 经典议论文 篇一:商业竞争对市场发展的影响商业竞争是市场经济中不可避免的现象,对市场发展起着重要的推...
谈面子议论文【优秀5篇】 谈面子议论文 篇一面子在中国文化中一直扮演着重要的角色,它是人们社会地位和尊严的象征。因此,面子议论...
初一的女孩_(精选6篇) 初一的女孩_ 篇一初一的女孩初一的女孩,正值少女青春期的开始,充满了好奇心和朝气。在这个阶段,她们开...
初中生科幻作文:机器猫(最新... 初中生科幻作文:机器猫 篇一机器猫我叫小明,是一个普通的初中生。有一天,我意外地发现了一只神奇的机器...
初一军训作文(推荐3篇) 初一军训作文 篇一初一军训是每个初中生的必修课程,也是我们适应新环境、锻炼意志的一次重要机会。我国历...
寒梅墨香初中作文500字(精... 寒梅墨香初中作文500字 篇一:寒梅墨香寒梅墨香,这是我最喜欢的一句诗句。每当我看到这句诗时,心中就...
仰望星空,脚踏实地作文650... 仰望星空,脚踏实地作文650字 篇一仰望星空,脚踏实地星空,是人类永远的向往和追求。每当夜幕降临,我...
我的忏悔初中作文【精简5篇】 我的忏悔初中作文 篇一我曾经做出了一件让我深感愧疚的事情,我想在这里向大家忏悔并寻求原谅。那是一个晴...
生活中的语言_初中记叙文【经... 生活中的语言_初中记叙文 篇一我和爸爸妈妈一样,是普通的工薪阶层,生活虽然平凡,但却充满了各种语言的...
初一我的奋斗目标作文500字... 初一我的奋斗目标作文500字 第一篇俗话说:“你脸上云淡风轻,谁也不知道你呼吸得有多紧;你走路带风,...
谢谢你让我遇见你作文(精彩5... 谢谢你让我遇见你作文 篇一遇见你,是我这一生最美好的偶遇。谢谢你,让我在茫茫人海中找到了属于我的那份...
那道靓丽的风景线作文700字... 那道靓丽的风景线作文700字 篇一那道靓丽的风景线在我家附近有一道靓丽的风景线,它是一条蜿蜒曲折的小...
烟花泪的作文【通用5篇】 烟花泪的作文 篇一烟花泪,是我对烟花的一种特殊感受。每当夜幕降临,烟花绽放的瞬间,我总能感受到一种深...
红色精神的作文600字【最新... 红色精神的作文600字 篇一:传承红色精神,弘扬革命精神红色精神是我们中华民族宝贵的精神财富,它是中...
我终于七年级作文通用8篇 我终于七年级作文 第一篇我默默地坐在床上,眼泪不争气地从眼眶里骨碌骨碌滚了出来。我抽了一张纸巾,把眼...
我好想见你_初中记叙文(通用... 我好想见你_初中记叙文 篇一初中时光,是我们成长的岁月。那时候的我们,充满了青春的活力和对未来的期待...