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