AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P3283. DNA序列

中等通过率 82% · 提交 147 · 通过 120
滑动窗口字符串模拟固定滑窗

小慕正在处理一个生物信息项目,其中涉及由 A/C/G 和 T 四种字母组成的序列。这个序列的 定义为字母 G 和 C 出现的总次数除以序列的总长度。在项目中,GC-Ratio 的高低对判断基因的起始位置至关重要。 现在,小慕有一个很长的序列,以及一个限定的长度 N。他需要从左到右扫描这个序列,找出 GC-Ratio 最高且长度为 N 的第一个子串。 序列由 ACGT 四种字母构成,例如子串可以是 ACG、CG、CGT 等,但不会出现 AGT 或 CT 等不符合连续位置要求的组合。

提示:带虚线的词点一下有通俗解释。

输入描述

输入一个string型基因序列,和int型子串的长度

输出描述

找出GC比例最高的子串,如果有多个则输出第一个的子串

示例

示例 1

输入

ACGT
2

输出

CG

说明:ACGT长度为2的子串有AC, CG,GT一共3个,其中AC和GT这2个的GC-Ratio都为0.5,CG为1,故输出CG

示例 2

输入

AACTGTGCACGACCTGA
5

输出

GCACG

说明:虽然CGACC的GC-Ratio也是最高,但它是从左往右找到的GC-Ratio最高的第2个子串,所以只能输出GCACG。

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
固定滑窗:寻找最高GC-Ratio子串 序列: A A C T G T G C A C G A C C T G A 窗口 N=5 AACTG GC-Ratio=0.4 ACTGT GC-Ratio=0.4 CTGTG GC-Ratio=0.6 TGTGC GC-Ratio=0.6 GTGCA GC-Ratio=0.6 GCACG GC-Ratio=0.8 (最高) 从左向右滑动窗口,计算每个子串的GC-Ratio,输出第一个最大值子串
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「DNA序列」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。