动态规划,把字符串s分割成两部分s[0,j-1]和s[j,i]
看两部分是否合法,dp[j]==true表示s[0,j-1]合法,则只需要考虑s[j,i]是否在wordDict里即可
public class Solution {
public boolean wordBreak(String s, List<String> wordDict) {
Set<String> word = new HashSet(wordDict);
boolean[] dp = new boolean[s.length() + 1];
dp[0] = true;
for (int i = 1; i <= s.length(); i++) {
for (int j = 0; j < i; j++) {
if (dp[j] && word.contains(s.substring(j, i))) {
dp[i] = true;
break;
}
}
}
return dp[s.length()];
}
}