gpt4 book ai didi

java - 创建一个方法来返回 DNA 链的 WC 补体

转载 作者:行者123 更新时间:2023-12-01 18:53:07 25 4
gpt4 key购买 nike

好的,所以我被要求创建一个方法pplementWC(),其工作原理如下:

public String complementWC()

返回 Watson Crick 补集,它是表示互补 DNA 链(即双螺旋中的另一条链)的字符串。因此,将所有 T 替换为 A,所有 A 替换为 T,所有 C 替换为 G,所有 G 替换为 C。

这就是我设法做到的:

private String dna;

public String complementWC(){
String dnaWC = "";
for(int i=0;i<dna.length();i++){
if(dna.charAt(i) == 'T'){
dna.replace(dna.charAt(i), 'A');
}
if(dna.charAt(i) == 'A'){
dna.replace(dna.charAt(i), 'T');
}
if(dna.charAt(i) == 'C'){
dna.replace(dna.charAt(i), 'G');
}
if(dna.charAt(i) == 'G'){
dna.replace(dna.charAt(i), 'C');
}
dnaWC = dna;
}
return dnaWC;
}

现在的问题是这个方法只返回原始 DNA 而不是 WCcomplement。因此,我不确定如何将 for 循环内的字符串存储到名为“dnaWC”的新字符串中。

最佳答案

字符串是不可变的。当您调用 replace 时,它会返回一个新字符串,而不是更改原始字符串,并且您会立即忽略返回的字符串。这就是为什么你的原始字符串从未改变。

您可以使用StringBuilder构建一个新字符串,这将节省每次替换字符时创建新字符串的开销,因为只会创建一个新字符串。

public String complementWC(){
StringBuilder builder = new StringBuilder();
for(int i=0;i<dna.length();i++){
char c = dna.charAt(i);
if(dna.charAt(i) == 'T'){
builder.append('A');
}
if(dna.charAt(i) == 'A'){
builder.append('T');
}
if(dna.charAt(i) == 'C'){
builder.append('G');
}
if(dna.charAt(i) == 'G'){
builder.append('T');
}
}
return builder.toString();
}

关于java - 创建一个方法来返回 DNA 链的 WC 补体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15143295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com