wordpress导航菜单居中百度关键词优化首选667seo
news/
2025/9/28 23:08:51/
文章来源:
wordpress导航菜单居中,百度关键词优化首选667seo,邯郸做网站熊掌号,贵州seo培训算法#xff1a;
这道题可以用回溯#xff0c;但是可能会超时
可以用背包问题解决#xff1a;
物品#xff1a;单词
背包#xff1a;字符串#xff1a;
单词能否组成字符串s#xff0c;就是问物品能不能把背包装满。
拆分时可以重复使用字典中的单词#xff0c;就…
算法
这道题可以用回溯但是可能会超时
可以用背包问题解决
物品单词
背包字符串
单词能否组成字符串s就是问物品能不能把背包装满。
拆分时可以重复使用字典中的单词就是完全背包
动规五部曲
1.确定dp数组及其下标
dp[i]:i为字符串的长度装满背包的容量
dp[i]是一个布尔值dp[i]为true表示可以拆分为一个或多个在字典中出现的单词。
2.确定递推公式
如果确定dp[j] 是true且 [j, i] 这个区间的子串出现在字典里那么dp[i]一定是true。j i 。
所以递推公式是
if([j, i] 这个区间的子串出现在字典里 dp[j]是true) 那么 dp[i] true。 3.dp初始化
dp数组为布尔量所以初始化只能赋值true或false
dp[i] 的状态依靠 dp[j]是否为true那么dp[0]就是递推的根基dp[0]一定要为true否则递推下去后面都是false了
但题目中说了“给定一个非空字符串 s” 所以测试数据中不会出现i为0的情况那么dp[0]初始为true完全就是为了推导公式。
下标非0的dp[i]初始化为false只要没有被覆盖说明都是不可拆分为一个或多个在字典中出现的单词。
4.确定遍历顺序
完全背包要讨论两层for循环的前后顺序。
如果求组合数就是外层for循环遍历物品内层for遍历背包。
如果求排列数就是外层for遍历背包内层for循环遍历物品。
本题其实我们求的是排列数。 拿 s applepenapple, wordDict [apple, pen] 举例。
apple, pen 是物品那么我们要求 物品的组合一定是 apple pen apple 才能组成 applepenapple。
apple apple pen 或者 pen apple apple 是不可以的那么我们就是强调物品之间顺序。
所以说本题一定是 先遍历 背包再遍历物品。
5.举例推导dp 1表示true0表示false。最终返回dp[s.size()]
正确代码
class Solution {public boolean wordBreak(String s, ListString wordDict) {HashSetString wordset new HashSet(wordDict);boolean[] dp new boolean[s.length()1];dp[0] true;for(int i1;is.length();i){for(int j0;ji dp[i]false;j){if(wordset.contains(s.substring(j,i)) dp[j]){dp[i]true;}}}return dp[s.length()];}
}
注意
1.将列表转为哈希表HashSet提升查找的时间效率
当直接使用列表进行单词的查找时通常需要遍历整个列表来查找目标单词。这意味着在最坏情况下需要检查列表中的每个单词直到找到目标单词或者确定其不存在。因此时间复杂度是O(n)其中n是列表中单词的数量。
在列表中进行查找时需要逐个比较每个单词直到找到匹配的单词或者遍历完整个列表。如果列表中的单词数量很大那么查找操作可能会花费较长的时间。
相比之下使用哈希表或者哈希集进行查找可以在平均情况下实现O(1)的时间复杂度因为哈希表允许直接计算目标单词的存储位置从而实现快速的查找操作。
2.两个for循环
第一个 for(int i1;is.length();i)
i从1开始因为i要比j大
i的索引最大到s.length()因为dp的长度为s.length()1dp的长度算上了初始化的dp[0]
第二个for(int j0;ji dp[i]false;j)
初始化的时候dp[i]false除了dp[0]所以要先判断dp[i]是否被赋值过即是否还是false只有没被赋值过才有必要更新。
时间空间复杂度
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/921243.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!