题目链接:https://leetcode-cn.com/problems/ju-zhen-zhong-de-lu-jing-lcof/
难度:中等
描述:
给定一个 m x n
二维字符网格 board
和一个字符串单词 word
。如果 word
存在于网格中,返回 true
;否则,返回 false
。
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
题解
class Solution:
def exist(self, board: List[List[str]], word: str) -> bool:
m, n = len(board), len(board[0])
def dfs(i, j, k):
if k == len(word):
return True
if i < 0 or i >= m:
return False
if j < 0 or j >= n:
return False
if board[i][j] != word[k]:
return False
board[i][j] = ""
ret = dfs(i-1, j, k+1) or dfs(i+1, j, k+1) or dfs(i, j-1, k+1) or dfs(i, j+1, k+1)
board[i][j] = word[k]
return ret
for i in range(m):
for j in range(n):
if dfs(i, j, 0):
return True
return False