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.
1D Dynamic Programming (Bottom-Up)
We use a boolean array `dp` of size `len(s) + 1`. `dp[i]` is true if the prefix `s[0...i-1]` can be segmented into words from the dictionary. For each index `i`, we check all possible preceding indices `j`. If `dp[j]` is true AND the substring `s[j...i]` exists in the dictionary, then `dp[i]` is true.