AI刷题打卡-Day1
[简]环状 DNA 序列的最小表示法 | 豆包MarsCode AI刷题
环状 DNA 序列的最小表示法
豆包AI给出的思路和Code实现:
-
给定一个长度为
n的序列,我们可以从任意位置开始读取,因此我们可以通过将序列拼接到自己后面来简化处理:例如,对于序列s = "ATCA",我们可以考虑s + s = "ATCAATCA",这样我们就能得到所有可能的n个表示。 -
遍历
s + s中的所有长度为n的子串,并比较它们的字典序即可。
代码:
def solution(dna_sequence):
ans = []
for i in range(len(dna_sequence)):
res = ""
for j in range(len(dna_sequence)):
res += dna_sequence[(i + j) % len(dna_sequence)] # 轮转拼接
ans.append(res)
ans.sort() # 对结果进行排序
return ans[0] # 返回字典序最小的轮转序列
if __name__ == "__main__":
# You can add more test cases here
print(solution("ATCA") == "AATC")
print(solution("CGAGTC") == "AGTCCG")
print(solution("TCATGGAGTGCTCCTGGAGGCTGAGTCCATCTCCAGTAG") == "AGGCTGAGTCCATCTCCAGTAGTCATGGAGTGCTCCTGG")