Python中的单词搜索
假设我们有一个2D板和一个单词,我们必须查找单词是否存在于网格中。单词可以由顺序相邻的单元格的字母组成,“相邻”单元格是水平或垂直相邻的单元格。我们不应多次使用同一个字母单元格。所以如果矩阵像-
一种 | 乙 | C | Ë |
小号 | F | C | 小号 |
一种 | d | Ë | F |
给定单词“ ABCCED”,答案将是正确的,对于单词“ SEE”,它将是正确的,但是对于“ ABCB”,如果答案是错误的。
让我们看看步骤-
我们将使用递归方法解决此问题。因此,如果调用了递归方法名称
find()
,则需要矩阵矩阵,单词,行,列和索引i。最初,索引i = 0如果i =字长,则返回True
如果row> = mat的行数或row <0或col> = mat的列数或col <0或word [i]与mat [row,col]不同,则返回false
mat [row,col]:=“ *”
res:= find(mat,word,row + 1,col,i +1)或find(mat,word,row-1,col,i + 1)或find(mat,word,row,col + 1,i + 1)或find(mat,word,row,col-1,i + 1)
mat [row,col]:=单词[i]
返回资源
主要任务将像-
n:=行数和m:=列数
当我的范围是0到n
如果word [0] = mat [i,j]
如果find(mat,word,i,j)不为假,则返回true
对于0到m范围内的j
让我们看下面的实现以更好地理解-
示例
class Solution(object):def exist(self, board, word):
n =len(board)
m = len(board[0])
for i in range(n):
for j in range(m):
if word[0] == board[i][j]:
if self.find(board,word,i,j):
return True
return False
def find(self, board,word,row,col,i=0):
if i== len(word):
return True
if row>= len(board) or row <0 or col >=len(board[0]) or col<0 or word[i]!=board[row][col]:
return False
board[row][col] = '*'
res = self.find(board,word,row+1,col,i+1) or self.find(board,word,row-1,col,i+1) or self.find(board,word,row,col+1,i+1) or self.find(board,word,row,col-1,i+1)
board[row][col] = word[i]
return res
ob1 = Solution()print(ob1.exist([["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]],"SEE"))
输入值
[["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]]"SEE"
输出结果
True
以上是 Python中的单词搜索 的全部内容, 来源链接: utcz.com/z/316762.html