139. 单词拆分

自己做(超时)

java
class Solution {
private boolean is_exist = false;
public void searchWord(String s, int begin, List<String> wordDict){
if(begin == s.length()){
is_exist = true;
return;
}
for(int i = 0; i < wordDict.size(); i++)
for(int j = begin; j < s.length() && j - begin + 1 <= wordDict.get(i).length(); j++)
if(s.substring(begin, j + 1).equals(wordDict.get(i)))
searchWord(s, j + 1, wordDict);
}
public boolean wordBreak(String s, List<String> wordDict) {
searchWord(s, 0, wordDict);
return is_exist;
}
}
看题解
官方题解

java
public class Solution {
public boolean wordBreak(String s, List<String> wordDict) {
Set<String> wordDictSet = 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] && wordDictSet.contains(s.substring(j, i))) {
dp[i] = true;
break;
}
}
}
return dp[s.length()];
}
}