【发布时间】:2019-09-04 03:12:15
【问题描述】:
我正在尝试解决 DNA 问题,这更像是 LCS 问题的改进(?)版本。
在这个问题中,有一个字符串是字符串和半子字符串,它允许部分字符串跳过一个或不跳过一个字母。例如,对于字符串“desktop”,它有半子字符串{"destop", "dek", "stop", "skop","desk","top"},所有这些都跳过一个或不跳过一个字母。
现在,我得到了两个由{a,t,g,c} 组成的 DNA 字符串。我正在尝试查找最长的半子字符串 LSS。如果有多个 LSS,则以最快的顺序打印出一个。
例如,两个 dnas {attgcgtagcaatg, tctcaggtcgatagtgac} 打印出 "tctagcaatg"
aaaattttcccc, cccgggggaatatca 打印出"aattc"
我正在尝试使用常见的 LCS 算法,但无法用表格解决它,尽管我确实解决了没有跳过字母的问题。有什么建议吗?
【问题讨论】:
-
您的意思是要查找最长的 common 半子字符串吗?
-
"aattc" 不是 "aaaattttcccc" 的半子串。是不是哪里有错别字?
-
顺便说一句,我认为首字母缩写词“LCS”通常与最长公共子序列问题相关联,它对跳过的字母数量没有限制。
-
可以跳过多次吗?也就是说,
dstp是desktop的允许 LSS 吗?我问是因为你的描述没有说清楚,但你的例子让它看起来很必要。 -
我不明白你给出的这个例子是如何只允许一个跳过的字母 -
{attgcgtagcaatg, tctcaggtcgatagtgac} prints out "tctagcaatg"
标签: algorithm subsequence lcs