当前位置: 首页 > news >正文

目前做的比较好的情趣用品网站百度广告太多

目前做的比较好的情趣用品网站,百度广告太多,网页设计实训报告总结100字,怎么自己做网站的优化给你两个字符串 str1 和 str2,返回同时以 str1 和 str2 作为 子序列 的最短字符串。如果答案不止一个,则可以返回满足条件的 任意一个 答案。 如果从字符串 t 中删除一些字符(也可能不删除),可以得到字符串 s &#x…

给你两个字符串 str1 和 str2,返回同时以 str1 和 str2 作为 子序列 的最短字符串。如果答案不止一个,则可以返回满足条件的 任意一个 答案。

如果从字符串 t 中删除一些字符(也可能不删除),可以得到字符串 s ,那么 s 就是 t 的一个子序列。

示例 1:
输入:str1 = “abac”, str2 = “cab”
输出:“cabac”
解释:
str1 = “abac” 是 “cabac” 的一个子串,因为我们可以删去 “cabac” 的第一个 "c"得到 “abac”。
str2 = “cab” 是 “cabac” 的一个子串,因为我们可以删去 “cabac” 末尾的 “ac” 得到 “cab”。
最终我们给出的答案是满足上述属性的最短字符串。

示例 2:
输入:str1 = “aaaaaaaa”, str2 = “aaaaaaaa”
输出:“aaaaaaaa”

提示:
1 <= str1.length, str2.length <= 1000
str1 和 str2 都由小写英文字母组成。

class Solution {
public:string shortestCommonSupersequence(string str1, string str2) {int m = str1.size(), n = str2.size();vector<vector<int>> dp(m+1, vector<int>(n+1));for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {if (str1[i - 1] == str2[j - 1]) {// 如果当前字符相等,则在前一个 LCS 的基础上加 1dp[i][j] = dp[i - 1][j - 1] + 1;} else {// 否则,取前一个状态的最大值dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);}}}int i = str1.size();int j = str2.size();string result = "";// 通过回溯 dp 数组来构建resultwhile (i > 0 && j > 0) {if (str1[i - 1] == str2[j - 1]) {// 如果字符相等,则是 result 的一部分result = str1[i - 1] + result;i--;j--;} else if (dp[i - 1][j] > dp[i][j - 1]) {// 如果字符不等,加入 str1 的字符result = str1[i - 1] + result;i--;} else {// 或者加入 str2 的字符result = str2[j - 1] + result;j--;}}while (i > 0) {result = str1[i - 1] + result;i--;}while (j > 0) {result = str2[j - 1] + result;j--;}return result;}
};

时间复杂度:O(n×m)
空间复杂度:O(n×m)

这道题的思路是先找到最短公共子序列LCS,然后我们知道了最短公共子序列后,就可以进而根据str1和str2还有dp进行回溯来构建出最短公共超序列result。

这道题的前面部分就是在求关于LCS的dp数组,可以参考模板力扣1143(主页有)。
这道题的难点我觉得是在回溯dp来构建result上面。
根据题目给的例子:

我们定义两个指针i和j分别指向str1和str2的最后一个元素。
当两个元素相等的时候,说明他们是LCS的一部分,所以将这个元素推入result中,由于str1和str2都包含这个元素,所以i和j都要-1。
当两个元素不相等的时候,我们就要将较不容易影响LCS的字符推入到result中,比如dp[i - 1][j] > dp[i][j - 1],也就是str[i-1]相对str[j-1]从字符串推入到result后,能尽可能保证剩下的字符串的LCS尽可能的大。

举个例子:
输入:str1 = “abac”, str2 = “cab”
在第一次判断的过程中,指针i指向str1的c,指针j指向str2的b,由于str1和str2的LCS是ab,那么b作为LCS的一部分,那么推入b就会影响到LCS(如果推入b后,那么构造LCS就没有意义,构造LCS的目的是让指针在都指向LCS的部分的时候,可以只推入一个元素,然后同时让i和j都-1)。所以我们推入c到result。


然后我们还要处理剩余部分,当某个字符串遍历完后,那么还会有一个字符串没有将元素推入到result中,这时候我们遍历完这个没遍历完的字符串,将其剩余部分推入result。

http://www.zhongyajixie.com/news/62444.html

相关文章:

  • 网站怎样赚钱企业网站开发多少钱
  • 公司管理类培训网站推广和网站优化
  • 汕头有几个区几个县seo软件服务
  • 网站上怎么做弹幕效果图怎么做个人网页
  • 关于企业网站建设的必要性深圳网站建设推广优化公司
  • 科技魏seoul是什么意思
  • 网站做外链软件淘宝关键词排名怎么查询
  • 网站建设定制开发服务seo课程培训机构
  • jquery网站开发实例站长工具seo优化
  • 网站网站建设平台杭州优化关键词
  • wordpress phpstorm首页关键词优化价格
  • 简单网页制作成品代码百度移动端优化
  • 做网站要学什么软件个人免费开发网站
  • 网站制作运营google图片搜索
  • 织梦做淘宝客网站视频给公司建网站需要多少钱
  • 太原网站建设培训学校软件推广的渠道是哪里找的
  • 做网页难吗网站如何优化推广
  • 如何用阿里云做网站软文广告推广
  • 雨岑信息科技有限公司做企业型网站做的怎么样_公司规模如何如何开网站详细步骤
  • 网站管理系统后台推广途径有哪些
  • 拟定一个物流网站建设方案自助建站
  • 西宁网站建设平台公司淘宝营销推广方案
  • 衡水医院网站建设百度关键词指数查询工具
  • 视频网站用什么做百度关键词竞价
  • 网络基础架构永州网站seo
  • 科技公司内蒙古网站制作关键词搜索排名推广
  • 做网站如何排版比较好网站制作公司
  • 做外发的网站百度推广网站一年多少钱
  • 邹城做网站站内seo优化
  • 碑林网站制作优化培训方式