Word Break 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.
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"
Note that you are allowed to reuse a word in dictionary.
Example 3:
Input: s = "catandog", wordDict = ["cats", "dog", "sand", "and", "cat"]
Output: false
Idea:
- Use prefix and suffix to solve the problem because two words are separated by space can be though of prefix and suffix of a string
- First, split [input] word into prefix and suffix
- Second, check whether the prefix is inside the dictionary
- Third, if the prefix is inside the dictionary, then do a recursion call with suffix as word
- Third 1, if the suffix is empty then return TRUE
Source Code
$b/java/WordBreak.java