Я написал код, который находит четыре разных последовательности символов.Поиск последовательностей символов, в зависимости от того, что на первом
ATG всегда в начале и TAG, TGA или TAA являются последовательностями «остановки».
Количество символов между пуска и останова должны на кратное 3.
Например, в следующей строке: ACC ATG CCC TAG ТТТ моя программа возвращает ATG CCC TAG.
И в этой строке: AA ATG CC TAG T ТАА программа возвращает ATG CCTAGT ТАА, так как количество символов между ATG и ТГА не кратно трем, так это ищет следующую последовательность «stop», которая в этом случае является 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 "";
}
}
Однако, в следующей строке "ATT ATG CCC ТАА TAG", код будет первым найти ATG CCCTAA TAG, даже если ТАА первая «стоп-последовательность» в строке и количество символов между ATG и TAA равно 3.
Как написать эту программу, чтобы какая-то последовательность «STOP» появилась первой в строке и n3 от начальной последовательности.
спасибо.