首页 > 解决方案 > 如何使用 for 在字符串中进行迭代替换每个字符(A 与 T,T,A,G 与 C,C 与 G)?

问题描述

我是编码新手。我正在做一个练习,在其中创建一个长度为 n 的随机 ADN(用户输入的那个)。这个这个,我要生成一个新的补充adn。

主要 ADN 只使用 = A、C、G、T。在我的新补充 ADN 中,我必须更改每个字符,因为需要将“A”替换为“T”,每个“T”都需要替换为“ A',每个'G'都必须替换为'C',并且每个'C'都需要替换为'G'。

例子:

我的随机 ADN 将是 = ACCGTTTTAAG。我的新补充 ADN 将是 = TGGCAAAATTC。

这是我的代码,我试图使用 for 在我的字符串中迭代并替换字母。虽然没有成功。但我想我有这个想法。我该如何进行?

public String cadenaComplementaria(String ADN) {
this.ADN = ADN;
String ADNComplementario = "";

for (int i = 0; i <= ADN.length(); i++) {

    if(this.ADN.charAt(i)=='A'){
        this.ADN.replace('A','T');
        ADNComplementario = this.ADN;
    }
    else if(this.ADN.charAt(i)=='C'){
        this.ADN.replace('C', 'G');
    }
    else if(this.ADN.charAt(i)=='G'){
        this.ADN.replace('G','C');
    }
    else if (this.ADN.charAt(i)=='T'){
        this.ADN.replace('T','A');
    }
return ADNComplementario;
}

所以我试图使用 for 在我的字符串中进行迭代,我试图读取该位置的 char 以便可以替换它,但它不起作用。我试图将 ADN 值转移到 ADNComplementario 以在我的 main 中调用它,也许我做错了。

如您所见,它是一个函数,我正在学习面向对象的编程。

标签: javabackend

解决方案


十分简单!

您只需要使用您使用得很好的替换方法。

public String cadenaComplementaria(String adn) {
    return adn.replace("C", "B").replace("G", "C").replace("B", "G")
              .replace("A", "D").replace("T", "A").replace("D", "T");
}

在这个解决方案中,我们首先用 B 替换 C,这样我们就可以用 C 替换所有 G。然后我们已经知道 B 曾经是 C,所以我们用 G 替换 B。

我们用字母 D 作为临时字母对 A 和 T 做同样的事情。


推荐阅读