212. Word Search II

212. Word Search II


class Solution:
    
    def findWords(self, board: List[List[str]], words: List[str]) -> List[str]:
        m,n=len(board),len(board[0])
        dic=defaultdict(set)
        for i in range(m):
            for j in range(n):
                dic[board[i][j]].add((i,j))
        
        results=deque()

        word,lngth,word_isr='',0, False

        def dfs(cord,indx):
            if indx==lngth:
                if word_isr:results.append(word[::-1])
                else:results.append(word)
                return True

            ch=word[indx]
            i,j=cord
            for cand in [(i-1,j),(i+1,j),(i,j-1),(i,j+1)]:
                if cand in dic[ch]:
                    dic[ch].remove(cand)
                    flag=dfs(cand,indx+1)
                    dic[ch].add(cand)
                    if flag:return True
            return False

        ref=set()
        for i in range(m):
            for j in range(n-1):
                ref.add(board[i][j]+board[i][j+1])
        
        for j in range(n):
            for i in range(m-1):
                ref.add(board[i][j]+board[i+1][j])
        
        def check(word):
            for i in range(len(word)-1):
                if word[i]+word[i+1] not in ref:
                    if word[i+1]+word[i] not in ref:
                        return False
            return True

        for w in words:
            if check(w):
                if w[:6]==w[0]*6 or len(dic[w[-1]])<len(dic[w[0]]):
                    word=w[::-1]
                    word_isr=True
                else:
                    word=w
                    word_isr=False
                lngth=len(word)
                for cord in list(dic[word[0]]):
                    dic[word[0]].remove(cord)
                    flag=dfs(cord,1)
                    dic[word[0]].add(cord)
                    if flag:break

        return results
        

1. remove some string patterns that could never exist

2. dic - letter with cords

相关推荐

  1. 212. Word Search II

    2023-12-30 16:36:04       57 阅读
  2. Leetcode. 212 单词搜索II

    2023-12-30 16:36:04       60 阅读
  3. 从零学算法212

    2023-12-30 16:36:04       40 阅读
  4. LeetCode 212.单词搜索II

    2023-12-30 16:36:04       31 阅读
  5. UVA-213

    2023-12-30 16:36:04       56 阅读
  6. 【LC刷题】DAY03:242 349 202 1

    2023-12-30 16:36:04       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-30 16:36:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-30 16:36:04       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-30 16:36:04       87 阅读
  4. Python语言-面向对象

    2023-12-30 16:36:04       96 阅读

热门阅读

  1. 深入浅出理解Web认证:Session、Cookie与Token

    2023-12-30 16:36:04       60 阅读
  2. 二、计算机软件及其使用-文字处理软件 Word 2016

    2023-12-30 16:36:04       65 阅读
  3. Windows自动化之UIautomation(一)

    2023-12-30 16:36:04       51 阅读
  4. 前端网络面试:浏览器输入地址后发生了什么?

    2023-12-30 16:36:04       55 阅读
  5. C语言计算三阶行列式

    2023-12-30 16:36:04       68 阅读
  6. 20世纪40年代是指哪一年

    2023-12-30 16:36:04       235 阅读
  7. uniapp的touchstart与click

    2023-12-30 16:36:04       54 阅读