算法:互补DNA-Java

题目

脱氧核糖核酸(DNA)是一种在细胞核中发现的化学物质,带有生物体发育和功能的“指令”。
在DNA串中,符号“A”和“T”是彼此的互补,如“C”和“G”。你有DNA的一条链(字符串,Haskell除外);你需要获得另一个互补的一面。 DNA链从不是空的或根本没有DNA(再次,除了Haskell)。
例子如下:

DnaStrand.makeComplement("ATTGC") // return "TAACG"
DnaStrand.makeComplement("GTAT") // return "CATA"

实现方法(一)

思路:先将字符串dna转化为char数组,再用foreach循环逐个替换,最后再将char数组转String输出。
其中对char数组中的每一个元素进行操作时,又可以采用if语句或者是switch语句,这里分别列出。
使用if语句代码如下:

class DnaStrand{
    public static String makeComplement(String dna){
        char[] arr = dna.toCharArray();
        for(char i : arr){
            if(i=='A') i = 'T';
            else if(i=='T') i = 'A';
            else if(i=='C') i = 'G';
            else if(i=='G') i = 'C';
            else System.out.println("error");
        }
        return (new String(arr));
    }
}

使用switch语句代码如下:

class Dnastrand{
    public static String makeComplement(String dna){
        char[] arr = dna.toCharArray();
        for(char i : arr){
            switch (i){
                case 'A':
                    i = 'T';
                    break;
                case 'T':
                    i = 'A';
                    break;
                case 'C':
                    i = 'G';
                    break;
                case 'G':
                    i = 'C';
                    break;
            }
        }
        return (new String(arr));
    }
}

实现方法(二)

思路:直接调用String类的方法replace()实现,这里也有两种实现方式:一种是找一个中间变量,另一种是将大写的"A,T,C,G"转化为小写的"a,t,c,g",之后再调用String类的toUpperCase()方法。
方法一:

class DnaStrand {
    public static String makeComplement(String dna) {
        return dna.replace("A","M")
        		.replace("T","A")
                .replace("M","T")
                .replace("C","N")
                .replace("G","C")
                .replace("N","G");
    }
}

方法二:

class DnaStrand {
    public static String makeComplement(String dna) {
        return dna.replace("A","t")
                .replace("T","a")
                .replace("C","g")
                .replace("G","c")
                .toUpperCase();
    }
}

知识点总结:

1.String转char型数组使用的是toCharArray()方法;
2.char数组转String有两种方法,一是new String(arr),另一种方法则是String.valueOf(char[] arr)
3.String类的方法String replace(CharSequence oldString, CharSequence newString)可直接替换字符串中的内容;
4.String类的方法String toLowerCase()String toUpperCase()可分别将字符串大写化和小写化。

本文参考:Click

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值