【发布时间】:2021-08-04 00:52:31
【问题描述】:
我在一个在线法官练习,我得到了这个挑战,“给定一个六字符的字符串数组(DNA字符串),如果你找到一个 4 等于连续字符的子序列,你就知道是否存在突变,你可以垂直、水平和倾斜地找到它。
所以如果我有下一个字符串数组:
dna = { "ATGCGA", "CAGTGC", "TTATGT", "AGAAGG", "CCCCTA", "TCACTG" }
它可能变成这样的矩阵:
ATGCGA
CAGTGC
TTATGT
AGAAGG
CCCCTA
TCACTG
需要注意的是,字符串的长度可能不是 6,但所有数组的长度必须相同,以形成 NxN 矩阵。
算法的输出应该是true,因为它有三个突变。
AXXXXX
XAXXXX
XXAXXX
XXXAXX
XXXXXX
XXXXXX
XXXXXX
XXXXXX
XXXXXX
XXXXXX
CCCCXX
XXXXXX
XXXXGX
XXXXGX
XXXXGX
XXXXGX
XXXXXX
XXXXXX
任何这些突变都必须使算法返回它具有突变。
我尝试通过将矩阵链接成 3 个不同的字符串(即大列、大行和大对角线)来应用最长的公共子序列,但这使得算法的效率最差。
有人可以指导我吗?
【问题讨论】:
-
你给出的例子都是连续的子序列。它们应该是连续的吗?
-
@גלעדברקן 是的,这 4 个字符在上面显示的任何形式中都必须是连续的。
标签: algorithm matrix sequence dna-sequence