DNA序列(牛客网算法/javascript Node环境)

描述

一个 DNA 序列由 A/C/G/T 四个字母的排列组合组成。 G 和 C 的比例(定义为 GC-Ratio )是序列中 G 和 C 两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的 GC-Ratio 可能是基因的起始点。

给定一个很长的 DNA 序列,以及限定的子串长度 N ,请帮助研究人员在给出的 DNA 序列中从左往右找出 GC-Ratio 最高且长度为 N 的第一个子串。

DNA序列为 ACGT 的子串有: ACG , CG , CGT 等等,但是没有 AGT , CT 等等

数据范围:字符串长度满足 1≤n≤1000 ,输入的字符串只包含 A/C/G/T 字母

输入描述:

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

输出描述:

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

javascript 复制代码
//示例1
//输入
ACGT
2
//输出
CG
//说明
ACGT长度为2的子串有AC,CG,GT3个,其中AC和GT2个的GC-Ratio都为0.5,CG为1,故输出CG   

//示例2
//输入
AACTGTGCACGACCTGA
5
//输出
GCACG
//说明
虽然CGACC的GC-Ratio也是最高,但它是从左往右找到的GC-Ratio最高的第2个子串,所以只能输出GCACG。
javascript 复制代码
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

let lines = [];
rl.on('line',function(line){
    lines.push(line);
    if(lines.length === 2){
        let strArr = lines[0].split('');
        let len = parseInt(lines[1]);
        let result = [0, '']
        for(let i=0;i<strArr.length - len + 1;i++){

            let res = strArr.slice(i, i + len);
            
            if(getGC(res)>result[0]){
                result = [getGC(res), res]
            }
        }
        console.log(result[1].join(''))
    }
    
})
function getGC(str){
    let GCcount = 0;
    for(let i=0; i<str.length;i++ ){
        if(str[i] === 'C' || str[i] === 'G'){
            GCcount++
        }
    }
    if(GCcount === 0){
        return 0
    }else{
        return GCcount/str.length
    }
}
相关推荐
TechWayfarer4 分钟前
AI的幻觉谁来买单?智能体时代的数据溯源与鉴权
开发语言·python·安全·ai
Str_Null4 分钟前
Python 自动线性化 HTML/MD 表格的工程实践(一个读取表格并且提供输出的工具)
开发语言·python·html
Shadow(⊙o⊙)5 分钟前
qt内详解信号和槽的基本概念+实例演示
开发语言·前端·c++·qt·学习
艾iYYY7 分钟前
类和对象(详解初始化列表, static成员变量, 友元,内部类)
c语言·数据结构·c++·算法
asdzx6711 分钟前
使用 C# 添加或读取 Excel 公式:完整指南
开发语言·c#·excel
磊 子12 分钟前
多继承和多态性
开发语言·c++
加号313 分钟前
【C#】 中 BCD 字节数组转十进制字符串的原理与实现思路
开发语言·c#
AbandonForce13 分钟前
C++11:列表初始化||右值和移动语义||引用折叠和完美转发||可变参数模板||lambda表达式||包装器(function bind)
开发语言·数据结构·c++·算法
jghhh0114 分钟前
燃料电池电源 Matlab 仿真方案
开发语言·matlab
萨小耶15 分钟前
[Java学习日记07】聊聊接口和抽象类
java·开发语言·学习