【发布时间】:2023-03-19 05:29:01
【问题描述】:
我写了一个代码,可以找到四种不同的字符序列。
ATG 总是在开始,而 TAG、TGA 或 TAA 是“停止”序列。
START 和 STOP 序列之间的字符数应为 3 的倍数。
例如在以下字符串中:ACCATGCCCTAGTTT 我的程序返回 ATGCCCTAG。
在这个字符串中:AAATGCCTAGTTAA程序返回ATGCCTAGT TAA,因为 ATG 和 TGA 之间的字符数不是三的倍数,所以它寻找下一个“停止”序列,在这种情况下是 TAA。
代码如下:
public class TagFinder {
public String findProtein(String dna) {
String fpL = dna.toLowerCase();
int start = fpL.indexOf("atg");
int stop = fpL.indexOf("tag", start+3);
int stop2 = fpL.indexOf("tga", start+3);
int stop3 = fpL.indexOf("taa", start+3);
if (start == -1) {
return "";
}
if ((stop - start) % 3 == 0) {
return fpL.substring(start, stop+3);
}
if ((stop2 - start) % 3 == 0) {
return fpL.substring(start, stop2+3);
}
if ((stop3 - start) % 3 == 0) {
return fpL.substring(start, stop3+3);
}
else {
return "";
}
}
但是,在下面的字符串“ATTATGCCCTAATAG”中,代码会首先找到ATGCCCTAATAG,即使 TAA 是字符串中的第一个“停止”序列,并且 ATG 和 TAA 之间的字符数是 3。
我如何编写这个程序,以便返回字符串中最先出现且距离起始序列 n3 的“STOP”序列。
谢谢。
【问题讨论】: