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
    }
}
相关推荐
鹏多多1 小时前
PC 网站接入微信登录,这 10 个坑我替你踩完了!
前端·javascript·vue.js
用户298698530142 小时前
React 中 HTML 内容转 Word 文档的实现方案
javascript·react.js·html
mONESY2 小时前
我用 Next.js 16 + Supabase 从零做了个「背单词」H5 应用
javascript
boooooooom2 小时前
手把手做一个图 RAG 烹饪问答系统:Neo4j + Milvus + LLM 的工程实践
前端·javascript·后端
alphaTao4 小时前
LeetCode 每日一题 2026/8/24-2026/8/30
python·算法·leetcode
Interview Aid1124 小时前
TikTok OA 四题分享|半小时内 AC,题目基本都是实现题
java·开发语言·算法·面试·职场和发展
染指11105 小时前
103.RAG-LLamaIndex后端rag问答-聊天接口
前端·javascript·vue.js·人工智能
CoderIsArt11 小时前
C#中UI 线程与 Dispatcher
开发语言·ui·c#
单线程_0113 小时前
从案例分析 Vue3 Tokenizer+Parser 源码三
前端·javascript·vue.js
顶点多余13 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法