Problem¶
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.
Constraints:
1 <= s.length <= 300
1 <= wordDict.length <= 1000
1 <= wordDict[i].length <= 20
s
andwordDict[i]
consist of only lowercase English letters.- All the strings of
wordDict
are unique.
Example 1:
**Input:** s = "leetcode", wordDict = ["leet","code"]
**Output:** true
**Explanation:** Return true because "leetcode" can be segmented as "leet code".
Solve¶
A example of dynamic programming.
- Using
set()
hash map for better string finding - Using evaluation: If
s[1]
can be create by provided word dict,s[2]
is also a word => that means[1]+s[2]
can be create by provided word dict. We can using this to form a dynamic programming approach
class Solution:
def wordBreak(self, s: str, wordDict: List[str]) -> bool:
wordDict = set(wordDict)
dp = [False]*(len(s)+1)
dp[0] = True
for i in range(1, len(s)+1):
for j in range(i):
if dp[j] and (s[j:i] in wordDict):
dp[i] = True
return dp[len(s)]
Last update :
October 13, 2023
Created : August 16, 2023
Created : August 16, 2023