classSolution:defexist(self, board, word):
m =len(board)
n =len(board[0])
visited =[[0for i inrange(n)]for j inrange(m)]for i inrange(m):for j inrange(n):if self.find(board, word,0, i, j, visited):returnTruereturnFalsedefinarea(self, x,y,m,n):if(x<m and y <n and x>=0and y>=0):returnTruereturnFalsedeffind(self, board, word, index, startx, starty, visited):
m =len(board)
n =len(board[0])
d =[[1,0],[0,1],[-1,0],[0,-1]]if index ==len(word)-1:return board[startx][starty]== word[index]if board[startx][starty]== word[index]:
visited[startx][starty]=1for i inrange(4):
x = startx + d[i][0]
y = starty + d[i][1]if self.inarea(x,y,m,n)==Trueand visited[x][y]==0and self.find(board, word, index+1, x, y, visited)==True:returnTrue
visited[startx][starty]=0returnFalse