Word Break
Problem Statement
Given a string and a dictionary, can you segment the string into space-separated words from the dictionary? This medium-level DP riddle is a linguist’s playground—break it down!
Example
Input: s = "leetcode", wordDict = ["leet", "code"]
Output: true ("leet code")
Input: s = "applepenapple", wordDict = ["apple", "pen"]
Output: true ("apple pen apple")
Input: s = "catsandog", wordDict = ["cats", "dog", "sand", "and", "cat"]
Output: false
Code
Java
                Python
                JavaScript
            
public class Solution {
    public boolean wordBreak(String s, List wordDict) {
        Set dict = new HashSet<>(wordDict);
        boolean[] dp = new boolean[s.length() + 1];
        dp[0] = true;
        for (int i = 1; i <= s.length(); i++) {
            for (int j = 0; j < i; j++) {
                if (dp[j] && dict.contains(s.substring(j, i))) {
                    dp[i] = true;
                    break;
                }
            }
        }
        return dp[s.length()];
    }
}
              
            
def word_break(s, wordDict):
    word_set = 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 word_set:
                dp[i] = True
                break
    return dp[len(s)]
            
            
function wordBreak(s, wordDict) {
    let dict = new Set(wordDict);
    let dp = new Array(s.length + 1).fill(false);
    dp[0] = true;
    for (let i = 1; i <= s.length; i++) {
        for (let j = 0; j < i; j++) {
            if (dp[j] && dict.has(s.slice(j, i))) {
                dp[i] = true;
                break;
            }
        }
    }
    return dp[s.length];
}
            
        Explanation
- DP Insight: dp[i] = true if substring[0:i] can be segmented.
 - Flow: Check all prefixes that form words with dict.
 - Example: "leetcode" → dp[8]=true ("leet"+"code").
 
Note
                Time complexity: O(n²), Space complexity: O(n). Wordplay with DP brilliance!
            
        