点击打开链接
//dp[i]表示子串S[i...len-1]是否可以根据字典进行拆分。
//dp[len]表示空串,dp[0]即s[0..len-1]为我们要求的答案。
class Solution {
public:
bool wordBreak(string s, vector<string>& wordDict) {
int len = s.size();
if(len==0) return false;
unordered_set<string>Dict(wordDict.begin(),wordDict.end()); //c++ 11出现的
vector<bool>dp(len+1,false);
dp[len]=true;
for(int i=len-1;i>=0;i--){
for(int j=i;j<len;j++){
string substr = s.substr(i,j-i+1);//截取了从i开始的i-j的子串
if(Dict.find(substr)!=Dict.end() && dp[j+1]==true){//第一个有单词,第二个也是有单词true了
dp[i] = true;
break;
}
}
}
return dp[0];
}
};
int main()
{
return 0;
}