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; }
若后续有更好的方法,再更!!!