动态规划
public class Solution {
Set<String> wordDict;
String s;
public boolean wordBreak(String s, Set<String> wordDict) {
this.wordDict=wordDict;
this.s=s;
boolean record[][]=new boolean [s.length()][s.length()];
for(int l=1;l<=s.length();l++)
{
for(int i=0;i<=s.length()-l;i++)
{
int endIndex=i+l-1;
for(int j=endIndex;j>=i;j--)
{
if(contain(j, endIndex)&&(i>j-1||record[i][j-1]))
{
record[i][endIndex]=true;
break;
}
}
}
}
return record[0][s.length()-1];
}
public boolean contain(int start,int end)
{
return wordDict.contains(s.substring(start,end+1));
}
}