博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【一天一道LeetCode】#79. Word Search
阅读量:4197 次
发布时间:2019-05-26

本文共 1975 字,大约阅读时间需要 6 分钟。

一天一道LeetCode

本系列文章已全部上传至我的github,地址:

欢迎大家关注我的新浪微博,
欢迎转载,转载请注明出处

(一)题目

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 =

[

 [‘A’,’B’,’C’,’E’],
 [‘S’,’F’,’C’,’S’],
 [‘A’,’D’,’E’,’E’]
]
word = “ABCCED”, -> returns true,
word = “SEE”, -> returns true,
word = “ABCB”, -> returns false.

(二)解题

本题大意:在一个字母矩阵中搜索指定的单词,要求矩阵中相邻的字母(上下左右)连接起来组成指定的单词,矩阵中的字母不允许重复使用。

解题思路:
1、采用回溯法和动态规划来解决
2、每次搜索到首字母后就向四个方向继续搜索,知道连接起来组成整个指定单词为止
3、注意字母不能重复搜索,需要用一个矩阵来标记此次搜索过的单词
下面来看具体代码:

class Solution {public:    bool isExist = false;    bool exist(vector
>& board, string word) { if(word == "") return true;//单词为空的特殊情况 int row = board.size(); if(row == 0) return false; int col = board[0].size(); vector
> isSearch; for(int i = 0 ; i < row ; i++)//初始化用来标记已搜索过字母的矩阵 { vector
temp(col,false); isSearch.push_back(temp); } for (int i = 0; i < row;i++) { for (int j = 0; j < col;j++) { if(board[i][j] == word[0]) {
//如果找到首字母就开始从四个方向搜索 backTraceExist(board, word, 0,i, j, row ,col ,isSearch); } } } return isExist; } void backTraceExist(vector
>& board, string word , int count ,int x , int y, int& row,int& col,vector
>& isSearch) { if(board[x][y] == word[count]) count++;//如果相等 else{ return; } if(count == word.length())//结束标志 { isExist = true; return; } if(!isExist){ isSearch[x][y] = true;//找过的字母记得标记起来 //这里需要注意越界的问题 //向左边找 if(y-1>=0&&!isSearch[x][y-1]) backTraceExist(board,word,count,x,y-1,row,col,isSearch); //向右边找 if(y+1
=0&&!isSearch[x-1][y]) backTraceExist(board,word,count,x-1,y,row,col,isSearch); //向下找 if(x+1
你可能感兴趣的文章
symfony
查看>>
yourls 短连接 安装
查看>>
yii2 php namespace 引入第三方非namespace库文件时候,报错:Class not found 的解决
查看>>
softlayer 端口开放
查看>>
操作1:mongodb安装
查看>>
操作2:mongodb使用语法
查看>>
如何给分类增加一个属性(后台)
查看>>
linux设置环境变量 临时设置 和 永久设置
查看>>
检查网站在世界各地的打开速度
查看>>
jquery 向上(顶部),向下(底部)滑动
查看>>
seo
查看>>
10个出色的NoSQL数据库
查看>>
MySQL: InnoDB 还是 MyISAM?
查看>>
MySQL性能优化的最佳20+条经验
查看>>
SQL语言的组成部分 ddl dcl dml
查看>>
mysql数据库从库同步延迟的问题
查看>>
1.mysql数据库主从复制部署笔记
查看>>
mysql数据库主从同步的问题解决方法
查看>>
mysql 配置 - on xFanxcy.com
查看>>
MySQL数据库高并发优化配置
查看>>