FreeCodeCamp筆記之:DNA Pairing

作者: delphuy | 来源:发表于2017-09-30 17:55 被阅读15次

    题目

    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");
    

    思路

    • 第一遍没看懂,按照以往的经验,兴冲冲的打开 Base pairs(碱基对) 的超链接,应该会有很详细的对这个游戏的解释;可惜,他大爷的,打开的是全英文的维基,还是没看懂;
    • 所以说,内事问百度是有道理的,在百度百科找到了这个的解释:

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

    • 扯这么多,意思就是一共有3组原始组合:[A,T],[G,C],[A,U]
    • 而题目只提到了

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

    • 因此只有2对 AT、CG,也就是说当str 里有字符为A时,要返回[A,T],有字符为T时,要返回[T,A],CG组合同理;
    • 这个理解了,题目就很简单了,用到一个函数 charAt() 来遍历str的字符;然后写个case或者 4个if else可以解决问题;

    解答

    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;
    }
    

    相关文章

      网友评论

        本文标题:FreeCodeCamp筆記之:DNA Pairing

        本文链接:https://www.haomeiwen.com/subject/jfknextx.html