Ich habe einen Code geschrieben, der vier verschiedene Zeichenfolgen findet.Suchen von Zeichenfolgen, je nachdem, was zuerst angezeigt wird
ATG ist immer am Anfang und TAG, TGA oder TAA sind die "Stop" -Sequenzen.
Die Anzahl der Zeichen zwischen START und STOP-Sequenzen sollte um ein Vielfaches von 3.
Zum Beispiel in der folgenden String: ACC ATG CCC TAG TTT mein Programm kehrt ATG CCC TAG.
Und in dieser Zeichenfolge: nicht ein Vielfaches von drei ist, so dass es AA ATG CC TAG T TAA das Programm ATG CCTAGT TAA, da die Anzahl der Zeichen zwischen ATG und TGA zurück sucht nach der nächsten "Stop" -Sequenz, die in diesem Fall TAA ist.
Hier ist der Code:
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 "";
}
}
jedoch im folgenden String "ATT ATG CCC TAA TAG", wird der Code zuerst ATG CCCTAA TAG, obwohl TAA finden ist die erste "Stop" -Sequenz in der Zeichenkette und die Anzahl der Zeichen zwischen ATG und TAA ist 3.
Wie kann ich dieses Programm schreiben, so dass die "STOP" -Sequenz zuerst erscheint in der Zeichenfolge und ist n3 weg von der Startsequenz zurückgegeben wird.
Vielen Dank.