博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Word Search
阅读量:6954 次
发布时间:2019-06-27

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

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 =

[  ["ABCE"],  ["SFCS"],  ["ADEE"]]

word = "ABCCED", -> returns true,

word = "SEE", -> returns true,
word = "ABCB", -> returns false.

思路:

DFS。

先找到一个等于word[0]的坐标作为开始点,然后以这个点开始往四周开始查找。用visited数组记录是否访问过某个点,避免循环访问。

代码:

1     bool exist(int x, int y, string word, int index, vector
> &visited, vector
> &board){ 2 if(x < 0 || y < 0 || x >= board.size() || y >= board[0].size()) 3 return false; 4 if(board[x][y] != word[index] || visited[x][y]) 5 return false; 6 if(index == word.length()-1) 7 return true; 8 visited[x][y] = true; 9 bool result = exist(x-1, y, word, index+1, visited, board) 10 || exist(x+1, y, word, index+1, visited, board)11 || exist(x, y-1, word, index+1, visited, board)12 || exist(x, y+1, word, index+1, visited, board);13 visited[x][y] = false;14 return result;15 }16 bool exist(vector
> &board, string word) {17 // IMPORTANT: Please reset any member data you declared, as18 // the same Solution instance will be reused for each test case.19 int l = word.length();20 if(l == 0)21 return true;22 int m = board.size();23 if(m == 0)24 return false;25 int n = board[0].size();26 if(n == 0)27 return false;28 vector
> visited(m, vector
(n, false));29 for(int i = 0; i < m; i++){30 for(int j = 0; j < n; j++){31 if(board[i][j] == word[0] && exist(i, j, word, 0, visited, board)){32 return true;33 }34 }35 }36 return false;37 }

 

 

转载于:https://www.cnblogs.com/waruzhi/p/3439565.html

你可能感兴趣的文章
[Sqoop]Sqoop使用
查看>>
Maven学习笔记(一)
查看>>
《零基础 Java 开发 》 第三章 运算符
查看>>
Maven_学习_01_跳过单元测试
查看>>
推荐 :2018最流行的编程语言Top 3
查看>>
BeanFactory 和 ApplicationContext
查看>>
Java如何制作帮助文档(API)
查看>>
Parrot 4.6 发布,基于 Debian 的 Linux 发行版
查看>>
HTML 基础
查看>>
NSA 将向公众开源逆向工程工具 GHIDRA
查看>>
微博内容正则表达式匹配链接, 话题标签与@用户
查看>>
ES6 - class的学习
查看>>
Maven和Gradle如何添加依赖
查看>>
Android RuntimePermissions运行时权限:批量权限申请
查看>>
LoRaWAN技术在物联网应用领域的优势
查看>>
“突破聆听”计划:霍金联手扎克伯格,斥巨资探索外星生命
查看>>
Android加载Gif和ImageView的通用解决方案:android-gif-drawable:GifTextView(2)
查看>>
web3j 以太坊客户端 Infura 签名
查看>>
为警察服务,微软将提供云端快速访问解决方案
查看>>
代理设计模式之静态代理与动态代理(超..)详解
查看>>