给定一个二维面板和一个单词,找出该单词是否存在于网格中。
这个词可由顺序相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
例如,
给定 二维面板 =
[
  ['A','B','C','E'],
  ['S','F','C','S'],
  ['A','D','E','E']
]
单词= "ABCCED",-> 返回 true,
单词 = "SEE", -> 返回 true,
单词 = "ABCB", -> 返回 false。
详见:https://leetcode.com/problems/word-search/description/

Java实现:

class Solution {
public boolean exist(char[][] board, String word) {
int m = board.length;
int n = board[0].length;
boolean[][] visited = new boolean[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (dfs(board, word, 0, i, j, visited)) {
return true;
}
}
}
return false;
} public boolean dfs(char[][] board, String word, int index, int rowindex, int colindex, boolean[][] visited) {
if (index == word.length()){
return true;
}
if (rowindex < 0 || colindex < 0 || rowindex >=board.length || colindex >= board[0].length){
return false;
}
if (visited[rowindex][colindex]){
return false;
}
if (board[rowindex][colindex] != word.charAt(index)){
return false;
}
visited[rowindex][colindex] = true;
boolean res =
dfs(board, word, index + 1, rowindex - 1, colindex, visited)
|| dfs(board, word, index + 1, rowindex + 1, colindex, visited)
|| dfs(board, word, index + 1, rowindex, colindex + 1, visited)
|| dfs(board, word, index + 1, rowindex, colindex - 1, visited);
visited[rowindex][colindex] = false;
return res;
}
}

参考:https://www.cnblogs.com/springfor/p/3883942.html

最新文章

  1. apt-get update : pulic key error
  2. 带无缝滚动的轮播图(含JS运动框架)
  3. C语言 断言 总结
  4. c++重载运算符注意
  5. 【OpenStack】OpenStack系列17之OpenStack私有云设计二
  6. TCP拥塞控制
  7. yii2 ArrayHelper map 使用
  8. openssl数字证书私钥删除私钥密码
  9. Samza在YARN上的启动过程 =》 之一
  10. 【分享】4412开发板-嵌入式Linux开发须要掌握的基础知识和技能
  11. BZOJ_3527_[ZJOI2014]_力_(FFT+卷积)
  12. System.Net网络编程--AuthenticationManager和IAuthenticationModule
  13. MFC多线程各种线程用法 .
  14. 手机自动化测试:appium源码分析之bootstrap二
  15. iOS图解多线程
  16. yum部署、使用 zabbix监控 - 详细过程
  17. pl/sql进阶--例外处理
  18. wxWidgets与其它GUI工具库比较
  19. coffee.js
  20. grp/从Zipkin到Jaeger,Uber的分布式追踪之道tchannel--zipkin with mysql in docker-compose

热门文章

  1. [原创]java向word模板中填充数据(总结)
  2. hdu-5804 Price List(水题)
  3. MySQL_各城市在线产品天订单数据20161130
  4. Codefroces 762A k-th divisor 数论
  5. BZOJ2877:[NOI2012]魔幻棋盘
  6. Poj_1005_I Think I Need A HouseBoat
  7. ZigBee自组网地址分配与路由协议概述
  8. 【转】Android SDCard操作(文件读写,容量计算)
  9. complexType
  10. 如何增加新的PointT类型