check up, down, left, right, if see the right letter, because word[next] can only be adjacent.
2. in order to avoid repeated checking, set the board[index] = '0'
还需要练习
classSolution:defexist(self,board: List[List[str]],word:str) ->bool:# edge caseiflen(board)==0orlen(board[0])==0:returnFalse# regular casefor i inrange(len(board)):for j inrange(len(board[0])):if self.find(board, word, 0, i, j)==True:returnTruereturnFalsedeffind(self,board,word,x,i,j):# stop conditionif x ==len(word):returnTrue# regular case m =len(board)-1 n =len(board[0])-1if i <0or i > m or j <0or j > n or board[i][j] != word[x]:returnFalse tmp = board[i][j] board[i][j] ='0' res = self.find(board, word, x+1, i+1, j) or self.find(board, word, x+1, i-1, j) or self.find(board, word, x+1, i, j+1) or self.find(board, word, x+1, i, j-1)
board[i][j] = tmpreturn res