139. 单词拆分
给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。
注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。
思路:
简单的DP。看数据比较小,两重循环。
dp[i]表示前i个字符是否能够由单词表的中的单词组成。
代码:
class Solution {
public:
bool wordBreak(string s, vector<string>& wordDict) {
set<string> st;
for(string x:wordDict){
st.insert(x);
}
int n=s.size();
vector<int> dp(n+1,0);
string tm=s.substr(0,1);
dp[0]=1;
for(int i=1;i<=n;i++){
int ok=0;
for(int j=0;j<i;j++){
if(dp[j]&&st.count(s.substr(j,i-j))) {
ok=1;
break;
}
}
dp[i]=ok;
}
return dp[n];
}
};