Проблема –
Учитывая непустую строку S и словарь Worddict, содержащий список непустых слов, определить, можно ли быть сегментировано в последовательность одинакового пространства одного или нескольких словаря.
Пример “” “Вход:, worddict = [” LET “,” код “] Выход: True Объяснение: Верните true, потому что «LeetCode» может быть семенсирован как «код лета».
“””
Решение –
Одной из возможных оптимизаций является то, что вместо итерации и проверки всех подстрок, мы знаем, какие подстроки ЛЕН присутствуют в словаре, и мы проверяем только те длины.
class Solution: def wordBreak(self, s: str, wordDict: List[str]) -> bool: dp = [False] * (len(s)+1) dp[0] = True d = set(wordDict) for i in range(len(s)): for word in wordDict: l = len(word) if i+1-l >= 0 and s[i+1-l:i+1] in d and dp[i+1-l]: dp[i+1] = True break return dp[-1]
Оригинал: “https://dev.to/skbhagat40/word-break-leetcode-day-29-4kdd”