Advertisement
rishu110067

Untitled

Feb 17th, 2022 (edited)
698
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.89 KB | None | 0 0
  1. class Solution:
  2.     def findWords(self, board: List[List[str]], words: List[str]) -> List[str]:
  3.        
  4.         # get all valid letters in board
  5.         valid_letters = set()
  6.         for i in range(len(board)):
  7.             for j in range(len(board[0])):
  8.                 valid_letters.add(board[i][j])
  9.                
  10.         def helper(board,i,j,idx,word):
  11.             #base case
  12.             if idx == len(word) - 1:
  13.                 return True
  14.            
  15.            
  16.             neighbors=[(i-1,j),(i+1,j),(i,j+1),(i,j-1)]
  17.          
  18.             for x,y in neighbors:
  19.                 if x>=0 and x<len(board) and y>=0 and y<len(board[0]) and board[x][y]==word[idx+1]:
  20.                     prev=board[x][y]
  21.                     board[x][y]='.'
  22.                     if helper(board,x,y,idx+1,word):
  23.                         board[x][y]=prev
  24.                         return True
  25.                     board[x][y]=prev
  26.             return False
  27.        
  28.         array=[]
  29.         for word in words:
  30.              # check if word contains any invalid letters
  31.             valid_word = True
  32.             for char in word:
  33.                 if char not in valid_letters:
  34.                     valid_word = False
  35.             if valid_word == False:
  36.                 continue
  37.                
  38.             found = False
  39.             for i in range(len(board)):
  40.                 if found: # break the loop if the word has been found
  41.                     break
  42.                 for j in range(len(board[0])):
  43.                     if found:
  44.                         break
  45.                     if board[i][j]==word[0]:
  46.                         prev=board[i][j]
  47.                         board[i][j]='.'
  48.                         if helper(board,i,j,0,word):
  49.                             found = True
  50.                         board[i][j]=prev
  51.             if found:
  52.                 array.append(word);
  53.         return array
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement