前端學習筆記我们就爱程序媛程序员

FreeCodeCamp筆記之:DNA Pairing

2017-09-30  本文已影响15人  delphuy

题目

DNA 链缺少配对的碱基。依据每一个碱基,为其找到配对的碱基,将结果作为第二个数组返回。
Base pairs(碱基对) 是一对 AT 和 CG,为给定的字母匹配缺失的碱基。
在每一个数组中将给定的字母作为第一个碱基返回。
例如,对于输入的 GCG,相应地返回 [["G", "C"], ["C","G"],["G", "C"]]
字母和与之配对的字母在一个数组内,然后所有数组再被组织起来封装进一个数组。
如果你被卡住了,记得开大招 Read-Search-Ask。尝试与他人结伴编程、编写你自己的代码。
这是一些对你有帮助的资源:
Array.push()
String.split()

function pair(str) {
  return str;
}
pair("GCG");

思路

碱基对
形成DNA、RNA单体以及编码遗传信息的化学结构。组成碱基对的碱基包括A—腺嘌呤、G—鸟嘌呤、T—胸腺嘧啶、C—胞嘧啶、U—尿嘧啶。严格地说,碱基对是一对相互匹配的碱基(即A—T, G—C,A—U相互作用)被氢键连接起来。然而,它常被用来衡量DNA和RNA的长度(尽管RNA是单链)。它还与核苷酸互换使用,尽管后者是由一个五碳糖、磷酸和一个碱基组成

Base pairs(碱基对) 是一对 AT 和 CG,为给定的字母匹配缺失的碱基。

解答

function pair(str) {
  var val=[];  // 定义变量接收数组
  for (var i=0;i<=str.length;i++){
     if(str.charAt(i) === 'A'){ 
       val[i] = ['A','T']; // 变量的第 i 个位置写入 数组;
     } else if (str.charAt(i) === 'T'){
        val[i] = ['T','A'];
     } else if (str.charAt(i) === 'G'){
       val[i] = ['G','C'];
     } else if (str.charAt(i) === 'C'){
       val[i] = ['C','G'];
     } 
  }
   return val;
}
pair("GCG"); 

搜索了一下网上的做法,千变万化,有用到题目所提示的 split()、push() 方法的;比如下面这个,做法很巧妙,取得str的对应字符存放到新数组newStr,最后将新数组依照 i 的位置顺序 做合并,代码简洁、高效:

function pair(str) {
  var i=0;
  var newStr='';
  var arr=[];
  for(i=0;i<str.length;i++){
    switch(str[i]){
      case 'A':
        newStr+='T';
        break;
      case 'T':
        newStr+='A';
        break;
      case 'G':
        newStr+='C';
        break;
      case 'C':
        newStr+='G';
        break;
    }
    arr.push([str[i],newStr[i]]);
  }
  return arr;
}
上一篇 下一篇

猜你喜欢

热点阅读