最长共同子序列(LCS)的计算方法有哪些?
- 内容介绍
- 文章标签
- 相关推荐
本文共计912个文字,预计阅读时间需要4分钟。
1. 最长公共子序列(LCS)问题:给定两个序列,找出这两个序列中存在的最长公共子序列,并输出其长度+1。
1. 最长共同子序列 (Longest Common Subsequence; LCS)
给定两个序列,找出两个序列中存在的最长子序列的长度。子序列是指以相同的相对顺序出现,但不一定是连续的序列 称为「最长共同子序列」(Longest Common Subsequence; LCS)」
示例: 序列“ ABCDGH”和“ AEDFHR”的LCS为长度3的“ ADH”。 序列“ AGGTAB”和“ GXTXAYB”的LCS为长度4的“ GTAB”。
解题思路
首先看一个2个字符串abcdefg和cef 要想求2个字符串最后一个位置的LCS,我们需要在下面3中情况中取最大值 如果最后一个字符不相等,则我们在下面两种情况中取一个最大值
第一个字符串取最后一个位置和第二个字符串不取最后一个位置,即abcdefg和ce 第一个字符串不取最后一个位置和第二个字符串取最后一个位置,即abcdef和cef 如果最后一个字符相等,我们只需要把前面的子串的LCS长度(即abcdef和ce)加上最后一个最后一个字符是否相等,相等为1,不等为0。
本文共计912个文字,预计阅读时间需要4分钟。
1. 最长公共子序列(LCS)问题:给定两个序列,找出这两个序列中存在的最长公共子序列,并输出其长度+1。
1. 最长共同子序列 (Longest Common Subsequence; LCS)
给定两个序列,找出两个序列中存在的最长子序列的长度。子序列是指以相同的相对顺序出现,但不一定是连续的序列 称为「最长共同子序列」(Longest Common Subsequence; LCS)」
示例: 序列“ ABCDGH”和“ AEDFHR”的LCS为长度3的“ ADH”。 序列“ AGGTAB”和“ GXTXAYB”的LCS为长度4的“ GTAB”。
解题思路
首先看一个2个字符串abcdefg和cef 要想求2个字符串最后一个位置的LCS,我们需要在下面3中情况中取最大值 如果最后一个字符不相等,则我们在下面两种情况中取一个最大值
第一个字符串取最后一个位置和第二个字符串不取最后一个位置,即abcdefg和ce 第一个字符串不取最后一个位置和第二个字符串取最后一个位置,即abcdef和cef 如果最后一个字符相等,我们只需要把前面的子串的LCS长度(即abcdef和ce)加上最后一个最后一个字符是否相等,相等为1,不等为0。

