/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
Set<String> wordDict = new HashSet<String>();
wordDict.add("lee");
wordDict.add("tco");
wordDict.add("de");
wordDict.add("leet");
wordDict.add("code");
wordBreak("leetcode", wordDict);
}
public static boolean wordBreak
(String s, Set
<String
> wordDict
) { if(s == null || wordDict.size() == 0)
return false;
int n = s.length();
int[] dp = new int[n + 1];
dp[0] = 0;
for (int i=0; i<n; i++) {
if(dp[i] != -1) {
for (int j=i+1; j<=n; j++) {
if (wordDict.contains(s.substring(i, j))) {
dp[j] = i;
}
}
}
}
for(int i=0; i<dp.length; i++) {
}
return dp[s.length()] != -1;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVNldDxTdHJpbmc+IHdvcmREaWN0ID0gbmV3IEhhc2hTZXQ8U3RyaW5nPigpOwoJCXdvcmREaWN0LmFkZCgibGVlIik7CgkJd29yZERpY3QuYWRkKCJ0Y28iKTsKCQl3b3JkRGljdC5hZGQoImRlIik7CgkJd29yZERpY3QuYWRkKCJsZWV0Iik7CgkJd29yZERpY3QuYWRkKCJjb2RlIik7CgkJCgkJd29yZEJyZWFrKCJsZWV0Y29kZSIsIHdvcmREaWN0KTsKCX0KCQoJcHVibGljIHN0YXRpYyBib29sZWFuIHdvcmRCcmVhayhTdHJpbmcgcywgU2V0PFN0cmluZz4gd29yZERpY3QpIHsKICAgICAgICBpZihzID09IG51bGwgfHwgd29yZERpY3Quc2l6ZSgpID09IDApCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgICAgaW50IG4gPSBzLmxlbmd0aCgpOwogICAgICAgIGludFtdIGRwID0gbmV3IGludFtuICsgMV07CiAgICAgICAgQXJyYXlzLmZpbGwoZHAsIC0xKTsKCiAgICAgICAgZHBbMF0gPSAwOwoKICAgICAgICBmb3IgKGludCBpPTA7IGk8bjsgaSsrKSB7CiAgICAgICAgICAgIGlmKGRwW2ldICE9IC0xKSB7CiAgICAgICAgICAgICAgICBmb3IgKGludCBqPWkrMTsgajw9bjsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmREaWN0LmNvbnRhaW5zKHMuc3Vic3RyaW5nKGksIGopKSkgewogICAgICAgICAgICAgICAgICAgICAgICBkcFtqXSA9IGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZvcihpbnQgaT0wOyBpPGRwLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgCVN5c3RlbS5vdXQucHJpbnRsbihkcFtpXSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZHBbcy5sZW5ndGgoKV0gIT0gLTE7CiAgICB9Cn0=