互补DNA:Complementary DNA

这道题描述起来十分地简单,就是把字符串总的AT和CG互换。

说一说我刚开始的思路吧,一般和字符串有关系的都会最先想到用正则,可惜我正则不是很熟练,交换字符位置一下子想不到怎么实现,只能老老实实用正常的办法了,遍历字符串,再拼接成我们需要的字符串,就能简单地实现交换的效果。再用数组$key=>$value的形式,十分简单地实现switch的效果。

function DNA_strand($dna) {
  $array = [
    "A" => "T",
    "T" => "A",
    "C" => "G",
    "G" => "C",
  ];
  foreach(str_split($dna) as $item) {
    $new .= $array[$item];
  }
  return $new;
}

不过像交换字符串中特定字符的位置这么容易使用到的功能,想必也是有已经封装好的函数可以直接使用的,搜索了一下,果然,可以用函数strtr()实现。
该函数支持两种参数形式:
1、strtr(string,array):把string中的字符按照array中的规则替换。
2、strtr(string,from,to):传入三个字符串,在第一个字符串中匹配from字符串,替换为to字符串。

function DNA_strand($dna) {
  return strtr($dna, ['A'=>'T', 'T'=>'A', 'C'=>'G', 'G'=>'C']);
}
//或者更简洁(这是大佬的代码,我是万万没想到还能这么用的)
function DNA_strand($dna) {
  return strtr($dna, 'ACGT', 'TGCA');
}

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注