设dp[i]为前i个字符是否可以切割。
一个字符串S,它的长度为len,如果S能够被“字典集合”(dict)中的单词拼接而成,那么所要满足的条件为:
dp[j] && dict.contains(s.substring(j, i)) 如果我们想知道某个子串是否可由dict中的几个单词拼接而成就可以
用这样的方式得到结果(满足条件为True, 不满足条件为False)存入到一个boolean数组的对应位置上。
public boolean wordBreak(String s, List<String> wordDict)
{
int n = s.length();
// dp[i]表示前i个字符能否被dict完整划分
boolean[] dp = new boolean[n+1];
dp[0] = true;
String str = null;
for (int i=1; i<=n; i++)
{
for (int j=0; j<i; j++)
{
str = s.substring(j, i); // [j, i)
if (dp[j] && wordDict.contains(str))
{
dp[i] = true;
break;
}
}
}
return dp[n];
}