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];}};
