• js程序-- DNA相关问题


    1.题目描述:

    DNA分子是以4种脱氧核苷酸为单位连接而成的长链,这4种脱氧核苷酸分别含有A,T,C,G四种碱基。碱基互补配对原则:A和T是配对的,C和G是配对的。如果两条碱基链长度是相同的并且每个位置的碱基是配对的,那么他们就可以配对合成为DNA的双螺旋结构。现在给出两条碱基链,允许在其中一条上做替换操作:把序列上的某个位置的碱基更换为另外一种碱基。问最少需要多少次让两条碱基链配对成功
    输入描述:
    输入包括一行:
    包括两个字符串,分别表示两条链,两个字符串长度相同且长度均小于等于50。

    输出描述:
    输出一个整数,即最少需要多少次让两条碱基链配对成功

    输入例子1:
    ACGT TGCA

    输出例子1:
    0

    readline = require('readline');
    rl = readline.createInterface({
        input:process.stdin,
        output:process.stdout,
    })
    
    rl.on('line',function(line){
        
        var first = line.split(' ')[0];
        var second = line.split(' ')[1];
        console.log(num(first,second))
        
    })
    
    function num(first,second){
        var n=0;
        for(var i=0;i<first.length;i++){
            if(matchchar(first[i],second[i])){
                
            }else{
                n++;
            }
            
            
        }
        
        return n;
        
    }
    
    function matchchar(char1,char2){
        if((char1=="A"&&char2=="T")||(char1=="T"&&char2=="A")||(char1=="C"&&char2=="G")||(char1=="G"&&char2=="C")){
            return true;
        }else{
            return false;
        }
        
    }

    2 题目描述:DNA的碱基为“A”“T”“”C“”“”G“”,给你一串“A”~“Z”组成的字符串,请输出最长的相邻碱基的长度

    例如:输入ABATV,输出为2

    var readline = require('readline');
    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout,
        terminal:false
    });
    
    var  str = '';
    rl.on('line', function(line){ // javascript每行数据的回调接口
         // 测试用例第一行读取n
            str = line.trim();
            // 输出结果
            console.log(maxLengthDNA(str));
            // 记录当前读取的行数
            str = '';
    });
    
    function maxLengthDNA(str){
        var strarr = str.split("");
        var arrLength = 0;
        var newarrLength = 0;
    
        if(str.indexOf('A')!=-1||str.indexOf('T')!=-1||str.indexOf('C')!=-1||str.indexOf('G')!=-1){
            newarrLength = 1;
            var i = 0;
            for(i;i<strarr.length;i++){
                var arr = [];
                if(strarr[i]=='A'||strarr[i]=='T'||strarr[i]=='C'||strarr[i]=='G'){
                    arr.push(strarr[i]);
                    for(var j=i+1;j<strarr.length;j++){
                       if(strarr[j]=='A'||strarr[j]=='T'||strarr[j]=='C'||strarr[j]=='G'){
                            arr.push(strarr[j]);
                            newarrLength = arr.length;
                            i=j;
    
                        }else{
                            if(newarrLength<arrLength){
                                newarrLength = arrLength;
                            }else{
                                arrLength =  newarrLength;
                            }
                            break;
                        }
                    }
                }
            }
        }
    
        return newarrLength;
    }

    若后续有更好的方法,再更!!!

  • 相关阅读:
    闭包函数+装饰器(第十一天)
    函数初接触2
    函数初接触
    第八天
    第八天
    第七天
    day4—day6作业(补发)
    第六天
    第五天
    python基础学习-常用模块的使用(扩展补充,高级使用)(三)
  • 原文地址:https://www.cnblogs.com/Catherine001/p/7236536.html
Copyright © 2020-2023  润新知