Dynamic Programming
19. Word Break
Given a string s and a dictionary of strings wordDict, return true if s can be segmented into a space-separated sequence of one or more dictionary words.
Note that the same word in the dictionary may be reused multiple times in the segmentation.
Examples
Example 1
Input: s = "leetcode", wordDict = ["leet","code"]
Output: true
Explanation: Return true because "leetcode" can be segmented as "leet code".
Example 2
Input: s = "applepenapple", wordDict = ["apple","pen"]
Output: true
Explanation: Return true because "applepenapple" can be segmented as "apple pen apple". The word "apple" is reused.
Example 3
Input: s = "catsandog", wordDict = ["cats","dog","sand","and","cat"]
Output: false
Constraints
1 <= s.length <= 3001 <= wordDict.length <= 10001 <= wordDict[i].length <= 20sandwordDict[i]consist of only lowercase English letters.- All the strings of
wordDictare unique.
from typing import List
# Determine whether s can be segmented into words from the dictionary
s: str = "leetcode"
wordDict: List[str] = ["leet", "code"]
dp: List[bool] = [False] * (len(s) + 1)
dp[len(s)] = True
for i in range(len(s) - 1, -1, -1):
for word in wordDict:
if (i + len(word) <= len(s)) and (s[i: i + len(word)] == word):
dp[i] = dp[i + len(word)]
if dp[i]:
break
print(dp[0]) Keyboard shortcuts
← h Previous problem
→ l Next problem
Esc Back to index
? Toggle this help