Конечно, это так.
dna = dna.replace('A' , 'T'); // replaces As with Ts
dna = dna.replace('T' , 'A'); // replace Ts with As (including the As that
// were replaced with Ts)
dna = dna.replace('G' , 'C'); // replaces Gs with Cs
dna = dna.replace('C' , 'G'); // replace Cs with Gs (including the Gs that
// were replaced with Cs)
Если вы хотите поменять местами как с Ts и G с C, вам, вероятно, следует использовать несколько промежуточных букв:
dna = dna.replace('A' , 'X');
dna = dna.replace('T' , 'A'); // only original Ts will become As
dna = dna.replace('X' , 'T');
dna = dna.replace('G' , 'Y');
dna = dna.replace('C' , 'G'); // only original Cs will become Gs
dna = dna.replace('Y' , 'C');
EDIT: AsМайк прокомментировал, что вы можете сделать эту замену намного эффективнее без replace
метода:
StringBuilder sb = new StringBuilder (dna.length());
for (char c : dna.toCharArray()) {
if (c == 'A')
sb.append('T');
else if (c == 'T')
sb.append('A');
else if (c == 'G')
sb.append('C');
else if (c == 'C')
sb.append('G');
}
dna = sb.toString();