题目描述:
给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。
注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。
解题思路:
这题用动态规划做,先写出状态转移方程
f[j] 表示s[0,j)是否可拆分
所以f[i] = true <==> 找到任何一个j( 0<=j<i),满足 f[j]==true &&s[j,i)可以在字典中找到
初始条件f[0]=true 当字符串s为空时,肯定可以由字典拼出
bool wordBreak(string s, vector<string>& wordDict) {
int n = s.size();
vector<bool> f(n+1,false);
f[0] = true;
for(int i=1;i<=n;i++){
for(int j=0;j<i;j++){
if(f[j] && find(wordDict.begin(), wordDict.end(),s.substr(j,i-j))!=wordDict.end()){
f[i] = true;
break;
}
}
}
return f[n];
}
动态规划解决字符串拆分问题
该博客探讨了一种使用动态规划算法解决字符串是否能由字典中单词拼接成的问题。解题思路涉及状态转移方程的建立,初始条件设置以及遍历寻找匹配的字典单词。动态规划在这里用于优化搜索过程,提高效率。

641

被折叠的 条评论
为什么被折叠?



