Thursday, September 18, 2014

Leetcode: Word Search @Python

class Solution:
    # @param board, a list of lists of 1 length string
    # @param word, a string
    # @return a boolean
    def exist(self, board, word):
        self.totalRow, self.totalCol = len(board), len(board[0])
        for i in xrange(self.totalRow):
            for j in xrange(self.totalCol):
                if board[i][j] == word[0]:
                    if self.dfs(board, i, j, word[1:]): return True
        return False
         
    def dfs(self, board, r, c, word):
        if len(word) == 0: return True
        increm=[[1,0],[-1,0],[0,1],[0,-1]]
        for [i,j] in increm:
            if self.totalRow>r+i>=0 and self.totalCol>c+j>=0 and board[r+i][c+j] == word[0]:
                ch, board[r][c] = board[r][c], '#'
                if self.dfs(board, r+i, c+j, word[1:]): return True 
                board[r][c] = ch
        return False

No comments :

Post a Comment