zoukankan      html  css  js  c++  java
  • codewars.DNA题目几种解法分析(字符串替换)

    题干:

    意思就是字符串替换,“A”与"C"配对,"T"与"G"配对,DNA不为空。

    解法一:我的解法,用for循环遍历字符串,按照配对规则进行一一判断,之后输出新的字符串。

    function DNAStrand(dna){
      //your code here
      var len=dna.length;
      var str1="";
      for(i=0;i<len;i++){		
        if(dna[i]==="A"){
            str1 =str1+"T";		
        }else if(dna[i]==="T"){
            str1 =str1+"A";
        }else if(dna[i]==="C"){
            str1 =str1+"G";
        }else if(dna[i]==="G"){
            str1 =str1+"C";
        }else{
    	str1 =str1+dna[i];
      }
      }
    	return str1;
    }
    DNAStrand("GTAT");
    

      但是我们来看看它的运行时间:371ms

    解法二:最高票解法如下,

    function DNAStrand(dna) {
      return dna.replace(/./g, function(c) {
        return DNAStrand.pairs[c]
      })
    }
    
    DNAStrand.pairs = {
      A: 'T',
      T: 'A',
      C: 'G',
      G: 'C',
    }
    

      字符串对象共有4个可以使用正则表达式:match(),replace(),search()和split()。

    String.prototype.replace调用RegExp.prototype[Symbol.replace]
    

      replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

    运行时间为:338ms

    解法三:使用es6的map

    var pairs = {'A':'T','T':'A','C':'G','G':'C'};
    
    function DNAStrand(dna){
      return dna.split('').map(function(v){
         return pairs[v] 
       }).join('');
    }
    

      对不起,第三种解法我没看懂。

  • 相关阅读:
    【微积分】 02
    【微积分】 01
    【线性代数】 09
    云南国庆八日游策划书
    Kubectl工具常用命令
    Linux 常用命令缩写及对应的
    kubectl工具的windows安装方法
    Intellij IDEA工具的常用快捷键
    如何理解docker镜像build中的上下文
    【转】在服务器上排除问题的头五分钟&常用命令
  • 原文地址:https://www.cnblogs.com/tanyali/p/8563335.html
Copyright © 2011-2022 走看看