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('');
    }
    

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

  • 相关阅读:
    day1
    day0
    Scala编程快速入门系列(二)
    Scala编程快速入门系列(一)
    awk使用方法与案例介绍
    快速掌握Shell编程
    yum源配置的三种方法
    部署Kettle做ETL开发并使用Crontab制作调度系统
    大数据平台Hive数据迁移至阿里云ODPS平台流程与问题记录
    RDD概念、特性、缓存策略与容错
  • 原文地址:https://www.cnblogs.com/tanyali/p/8563335.html
Copyright © 2011-2022 走看看