【LeetCode】Word Search 解题报告
来源:互联网 发布:linux扫描工具 编辑:程序博客网 时间:2024/06/05 20:24
【题目】
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;回溯;递归。
public class Solution { char[][] board; int m, n; public boolean exist(char[][] board, String word) { if (board == null || word == null) return false; if (("").equals(word)) return true; this.board = board; m = board.length; n = board[0].length; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (board[i][j] == word.charAt(0)) { char tmp = board[i][j]; board[i][j] = '#'; if (dfs(i, j, word.substring(1))) return true; board[i][j] = tmp; } } } return false; } public boolean dfs(int i, int j, String word) { if (("").equals(word)) return true; char tar = word.charAt(0); String left = word.substring(1); if (i > 0 && board[i - 1][j] == tar) { board[i - 1][j] = '#'; if (dfs(i - 1, j, left)) return true; board[i - 1][j] = tar; } if (j > 0 && board[i][j - 1] == tar) { board[i][j - 1] = '#'; if (dfs(i, j - 1,left)) return true; board[i][j - 1] = tar; } if (i < m - 1 && board[i + 1][j] == tar) { board[i + 1][j] = '#'; if (dfs(i + 1, j, left)) return true; board[i + 1][j] = tar; } if (j < n - 1 && board[i][j + 1] == tar) { board[i][j + 1] = '#'; if (dfs(i, j + 1, left)) return true; board[i][j + 1] = tar; } return false; }}
0 0
- Leetcode Word Search 解题报告
- 【LeetCode】Word Search 解题报告
- 【LeetCode】Word Search 解题报告
- [LeetCode] Word Search 解题报告
- 【LeetCode】Word Search II 解题报告
- LeetCode-Word Search II-解题报告
- [leetcode] 212. Word Search II 解题报告
- [leetcode] 79. Word Search 解题报告
- [Leetcode] 79. Word Search 解题报告
- [Leetcode] 212. Word Search II 解题报告
- [LeetCode]Add and Search Word - Data structure design,解题报告
- Word Search II解题报告
- Word Search II 解题报告
- LeetCode Word Break 解题报告
- LeetCode Word Ladder解题报告
- 【LeetCode】Word Break 解题报告
- [LeetCode]Word Break,解题报告
- [LeetCode]Word Ladder,解题报告
- 第十三周 项目2 输入班级的人数及成绩三种方法(1和2)
- ORACLE 转移表空间
- JAVA程序员面试之《葵花宝典》
- 第13周项目5-字符串操作-(2.3)
- Android中viewpager自适应高度
- 【LeetCode】Word Search 解题报告
- POJ 1958 Strange Towers of Hanoi (线性dp 推公式)
- simpleApater自定义列表(程序)
- "usermod"命令使用完全指导---15个练习例程截图
- Linux之seq命令
- 安卓入门---安卓开发实战经典1-3章
- hdu 2768 Cat vs. Dog二分匹配好题
- #pragma once
- hdu 3572 Task Schedule