diff --git a/implement-trie-prefix-tree/8804who.py b/implement-trie-prefix-tree/8804who.py new file mode 100644 index 0000000000..3514a16698 --- /dev/null +++ b/implement-trie-prefix-tree/8804who.py @@ -0,0 +1,39 @@ +class Trie: + + def __init__(self): + self.trie = {} + + def insert(self, word: str) -> None: + level = self.trie + + for i in range(len(word)+1): + if i==len(word): + level['end'] = 0 + break + if word[i] not in level: + level[word[i]] = {} + level = level[word[i]] + + def search(self, word: str) -> bool: + level = self.trie + + for char in word: + if i==len(word): + if 'end' in level: + return True + else: + return False + if word[i] not in level: + return False + level = level[word[i]] + + def startsWith(self, prefix: str) -> bool: + level = self.trie + + for i in range(len(prefix)+1): + if i==len(prefix): + return True + if prefix[i] not in level: + return False + level = level[prefix[i]] + diff --git a/word-break/8804who.py b/word-break/8804who.py new file mode 100644 index 0000000000..5445df09d5 --- /dev/null +++ b/word-break/8804who.py @@ -0,0 +1,16 @@ +class Solution: + def wordBreak(self, s: str, wordDict: List[str]) -> bool: + dp = [False] * (len(s)+1) + dp[0] = True + + for i in range(len(s)): + if not dp[i]: + continue + for word in wordDict: + if i+len(word)>=len(s)+1: + continue + if s[i:i+len(word)] == word: + dp[i+len(word)] = True + + return dp[-1] +