M-139. Word Break

# O(n^2), O(n)
# BFS
from collections import deque
class Solution:
    def wordBreak(self, s: str, wordDict: List[str]) -> bool:
        wordDictSet = set(wordDict)
        queue = deque()
        visited = set()
        queue.append(0)
        
        while queue:
            start = queue.popleft()
            if start not in visited:
                for end in range(start, len(s)):
                    if s[start:end + 1] in wordDictSet:
                        queue.append(end + 1)
                        if end == len(s) - 1:
                            return True
                visited.add(start)
        return False

Last updated

Was this helpful?