问题
解题
- 状态表示:dp[i],表示s的第0~i位能否成功地单词拆分
- 状态转移,枚举0~j,如果dp[j]能成功单词拆分且第 j+1 ~ i 位也在字典中,那么dp[i]也可以成功地单词拆分,因此状态转移方程:
dp[i] = dp[j](from 0 to i - 1) && set.contains(s.substring(j,i))
class Solution {
public boolean wordBreak(String s, List<String> wordDict) {
Set<String> set = new HashSet(wordDict);
int n = s.length();
boolean[] dp = new boolean[n + 1];
dp[0] = true;
for(int i = 1; i <= n ; i ++){
for(int j = 0; j < i; j ++){
if(dp[j] == true && set.contains(s.substring(j, i))){
dp[i] = true;
break;
}
}
}
return dp[n];
}
}