当前位置: 首页 > 面试题库 >

手写算法:最长公共连续子序列

宗政德宇
2023-03-14
本文向大家介绍手写算法:最长公共连续子序列相关面试题,主要包含被问及手写算法:最长公共连续子序列时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

int substr(string & str1, string &str2)
{
int len1 = str1.length();
int len2 = str2.length();
vector<vector<int>>dp(len1,vector<int>(len2,0));
for (int i = 0; i < len1; i++)
{
dp[i][0] = str1[i]==str1[0]?1:0;
}
for (int j = 0; j <= len2; j++)
{
dp[0][j] = str1[0]==str2[j]?1:0;
}
for (int i = 1; i < len1; i++)
{
for (int j = 1; j < len2; j++)
{
if (str1[i] == str2[j])
{
dp[i][j] = dp[i - 1][j - 1]+1;
}
}
}
int longest = 0;
int longest_index = 0;
for (int i = 0; i < len1; i++)
{
for (int j = 0; j < len2; j++)
{
if (longest < dp[i][j])
{
longest = dp[i][j];
longest_index = i;
}
}
}
//字符串为从第i个开始往前数longest个

    for (int i = longest_index-longest+1; i <=longest_index; i++)
    {
    cout << str1[i] << endl;
    }
    return longest;
}

 

 

 类似资料:
  • 问题描述 什么是最长公共子序列呢?好比一个数列 S,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则S 称为已知序列的最长公共子序列。 举个例子,如:有两条随机序列,如 1 3 4 5 5 ,and 2 4 5 5 7 6,则它们的最长公共子序列便是:4 5 5。 分析与解法 解法一 最容易想到的算法是穷举搜索法,即对X的每一个子序列,检查它是否也是Y的子序列,从而确定它是

  • 本文向大家介绍Ruby实现的最长公共子序列算法,包括了Ruby实现的最长公共子序列算法的使用技巧和注意事项,需要的朋友参考一下 最长公共子序列,LCS,动态规划实现。

  • 然而,我意识到我真正想解决的问题有点不同。给定一个固定的k,我需要确保公共子序列只涉及长度正好为k的子串。例如,设置k=2,并让这两个字符串为 我需要的子序列是“。 是否可以修改动态规划解来解决这个问题?

  • 本文向大家介绍Python最长公共子串算法实例,包括了Python最长公共子串算法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python最长公共子串算法。分享给大家供大家参考。具体如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 本文向大家介绍手写代码:两个字符串的最长公共子序列?相关面试题,主要包含被问及手写代码:两个字符串的最长公共子序列?时的应答技巧和注意事项,需要的朋友参考一下 参考回答:  

  • longestCommonSubsequence正在返回LCS的长度。代码运行良好。但我试图打印子序列的值。例如,它应该打印“acef”。但我的代码只打印“ae”<如何修复? 这是完整的代码https://pastebin.com/Sq4QMtxF