这道题描述起来十分地简单,就是把字符串总的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');
}
另外,如果你有兴趣,或者是有问题想要与我探讨,欢迎来访问我的博客:https:mu-mu.cn/blog