题目链接:(https://leetcode-cn.com/explore/interview/card/top-interview-quesitons-in-2018/275/string/1138/)
class Solution {
public boolean wordBreak(String s, List<String> wordDict) {
boolean[] count = new boolean[s.length() + 1];
count[0] = true;
for(int j = 1;j <= s.length();j++){
for(int i = 0;i < j;i++){
// 这边是一个适配的理念,只要找到一个就立即跳出底层循环从当前j 处继续往后找。因为可以使用无限次数,所以其实这是一个背包问题。
if(count[i] && wordDict.contains(s.substring(i,j))){
count[j] = true;
break;
}
}
}
return count[s.length()];
}
}
网友评论