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
    }
}
相关推荐
UIU1142 分钟前
递归算法与汉诺塔
c++·学习·算法·c#·递归
Fruit_Caller18 分钟前
static
开发语言·c++
默_笙5 小时前
🚓 分诊台与拆题术:让 RAG 学会判断和规划
前端·javascript
呃呃呃呃ex5 小时前
10. 现代前端工程化:ES6 React 项目实战与原理解析
前端·javascript
用户979984807185 小时前
200 行代码写一个能跑的 AI Agent:不依赖任何框架,只靠 tool-calling 原理
算法
浪遏5 小时前
D2C 系统架构复盘:从设计稿到代码,我们踩过的坑和最终方案
前端·javascript·后端
threerocks5 小时前
【Muse实战】X 流量作战室搭建保姆级教程 - 拥有你自己的运营团队
算法
Blanche15005 小时前
Webpack 构建流程解析
javascript·面试
GreenTea5 小时前
深度拆解 ScienceBuddy:如何用“双层递归自进化”构建高可靠科研 Agent Harness
前端·后端·算法
Flynt5 小时前
官方说一个破折号拖慢整段高亮,我在 Node 里验证了一遍:机制是真的,2.8 倍没跑出来
javascript·性能优化·v8