codewars.DNA题目几种解法分析(字符串替换)
题干:
意思就是字符串替换,“A”与"C"配对,"T"与"G"配对,DNA不为空。
解法一:我的解法,用for循环遍历字符串,按照配对规则进行一一判断,之后输出新的字符串。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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
解法二:最高票解法如下,
1 2 3 4 5 6 7 8 9 10 11 12 | 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()。
1 | String.prototype.replace调用RegExp.prototype[Symbol.replace] |
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
运行时间为:338ms
解法三:使用es6的map
1 2 3 4 5 6 7 | var pairs = { 'A' : 'T' , 'T' : 'A' , 'C' : 'G' , 'G' : 'C' }; function DNAStrand(dna){ return dna.split( '' ).map( function (v){ return pairs[v] }).join( '' ); } |
对不起,第三种解法我没看懂。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?