链接:
https://www.nowcoder.com/practice/5f3b7bf611764c8ba7868f3ed40d6b2c?tpId=46&tqId=29041&tPage=1&rp=1&ru=/ta/leetcode&qru=/ta/leetcode/question-ranking
描述:
代码:
class Solution {
public:
bool wordBreak(string s, unordered_set<string> &dict) {
int len=s.size();
vector<bool>dp(len+1);
dp[0]=true;
for(int j=1;j<=len;j++){
for(int i=j-1;i>=0;i--){
if(dp[i] && (dict.find(s.substr(i,j-i)))!=dict.end()){
dp[j]=true;
break;
}
}
}
return dp[len];
}
};
代码难点:
在这个测试用例中
如果我们在判断第一个单词leet时,把前面的直接给删除了
那么后面的code就不能被最后一个单词leetcode判定
所以在判断时要把遍历的字母前面所有都要判定