状态转移方程:f(i)表示s[0,i]是否可以分词
f(i) = f(j) && f(j+1,i); 0 <= j <= i
import java.util.*;
public class WordBreak {
public static void main(String[] args) {
String s = "leetcode";
Set<String> dict = new HashSet<String>();
dict.add("leet");
dict.add("code");
WordBreak solution = new WordBreak();
System.out.println(solution.wordBreak(s, dict));
}
public boolean wordBreak(String s, Set<String> dict) {
int length=s.length();
if(length<1)
return true;
boolean[] dp=new boolean[length+1];//默认值为false
dp[0]=true;
for(int i=0;i<length;i++){
if(dp[i]){
for(int j=i;j<length;j++){
if(dict.contains(s.substring(i,j+1))){
dp[j+1]=true;
}
}
}
}
return dp[length];
}
}