139 Word Break

Given anon-emptystring_s_and a dictionary_wordDict_containing a list ofnon-emptywords, determine if_s_can be segmented into a space-separated sequence of one or more dictionary words.

Note:

  • The same word in the dictionary may be reused multiple times in the segmentation.
  • You may assume the dictionary does not contain duplicate words.

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 dictionary word.

Example 3:

Input:
 s = "catsandog", wordDict = ["cats", "dog", "sand", "and", "cat"]

Output:
 false

Solution)

class Solution {
    Set<String> map = new HashSet();
    public boolean wordBreak(String s, List<String> wordDict) {
        if(wordDict.contains(s)) return true;
        if(map.contains(s)) return false;
        for(String word : wordDict){
            if(s.startsWith(word)){
                if(wordBreak(s.substring(word.length()), wordDict)) return true;
            }
        }
        map.add(s);
        return false;
    }  
}

results matching ""

    No results matching ""