String replace() Elemente tauschen

GAZ

Mitglied
Hallo zusammen,

ich schreibe gerade ein Programm, bei der ich eine komplementär DNA mit Hilfe einer der replace Methode erstellen soll.
Mein Problem ist gerade das ich meine eigenen Schritte so immer wieder rückgängig mache.
Übergebe ich zum Beispiel "ACTG" spuckt mein Programm mir "ACAC" aus, anstatt wie gewünscht "TGAC", ich habe gerade irgendwie einen Hänger im Kopf und kriege das Problem nicht gelöst, wo das Problem liegt ist mir allerdings klar.
 

Anhänge

  • Screenshot 2020-12-17 17.48.16.png
    Screenshot 2020-12-17 17.48.16.png
    40,5 KB · Aufrufe: 54
Beste Antwort
K
Das kann man natürlich mit replace machen, ist aber etwas umständlich: Du ersetzt dazu erstmal A durch a, dann T durch A und anschließend a durch T. Das gleiche Spiel mit den anderen Buchstaben.
Die Idee mit großen und kleinen Buchstaben hatte ich auch - aber da hätte ich beim Ersetzen generell gewandelt um dann am Ende ein toUpper() aufzurufen. Also A -> t, C ->g, T->a, G -> c ...

Aber man kann statt ersetzen sich ein Array von Zeichen besorgen, dann die Zeichen einmal durchlaufen und dann das Array wieder zu einem String machen ...
Einfach nur mit String.replace(char, char) funktioniert das auch nicht. Du musst einmal über den String rüberrennen und _alle_ Zeichen ersetzen, nicht viermal über den String und jeweils ein einzelnes Zeichen ersetzen.
 
Ja, Du hast das Problem schon richtig erkannt.

Erste Frage: Musst Du die replace Methode nutzen?

Also ich sehe zwei Möglichkeiten:
a) statt der Replace Methode könntest Du Dir überlegen, wie DU es mit Stift und Papier machen würdest. Dann würde da ein Algorithmus raus kommen, der wohl ohne replace auskommt.
b) du könntest dir überlegen, wie Du die replace Aufrufe ändern könntest, damit die bereits ersetzten Zeichen nicht noch einmal ersetzt werden. (Das läuft dann auf noch mehr Veränderungen hinaus - sehe ich nicht als zielführend an, aber wenn die replace Methode gefordert wird, dann würde das dennoch gehen ...)
 
Ja, Du hast das Problem schon richtig erkannt.

Erste Frage: Musst Du die replace Methode nutzen?

Also ich sehe zwei Möglichkeiten:
a) statt der Replace Methode könntest Du Dir überlegen, wie DU es mit Stift und Papier machen würdest. Dann würde da ein Algorithmus raus kommen, der wohl ohne replace auskommt.
b) du könntest dir überlegen, wie Du die replace Aufrufe ändern könntest, damit die bereits ersetzten Zeichen nicht noch einmal ersetzt werden. (Das läuft dann auf noch mehr Veränderungen hinaus - sehe ich nicht als zielführend an, aber wenn die replace Methode gefordert wird, dann würde das dennoch gehen ...)
Ist nicht unbedingt gefordert, wird aber als Hinweis angegeben, dass es damit gehen würde, deswegen wollte ich es auch damit versuchen! Wenn's dadurch aber nur unnötig kompliziert wird versuche ich es erstmal auf andere Weise. Vielen Dank schonmal!
 

Anhänge

  • Screenshot.PNG
    Screenshot.PNG
    9 KB · Aufrufe: 31
Das kann man natürlich mit replace machen, ist aber etwas umständlich: Du ersetzt dazu erstmal A durch a, dann T durch A und anschließend a durch T. Das gleiche Spiel mit den anderen Buchstaben.

Oops, @kneitzel hat da den Wink schon gegeben, sorry.
 
Das kann man natürlich mit replace machen, ist aber etwas umständlich: Du ersetzt dazu erstmal A durch a, dann T durch A und anschließend a durch T. Das gleiche Spiel mit den anderen Buchstaben.
Die Idee mit großen und kleinen Buchstaben hatte ich auch - aber da hätte ich beim Ersetzen generell gewandelt um dann am Ende ein toUpper() aufzurufen. Also A -> t, C ->g, T->a, G -> c ...

Aber man kann statt ersetzen sich ein Array von Zeichen besorgen, dann die Zeichen einmal durchlaufen und dann das Array wieder zu einem String machen ...
 
Beste Antwort
Die Idee mit großen und kleinen Buchstaben hatte ich auch - aber da hätte ich beim Ersetzen generell gewandelt um dann am Ende ein toUpper() aufzurufen. Also A -> t, C ->g, T->a, G -> c ...

Aber man kann statt ersetzen sich ein Array von Zeichen besorgen, dann die Zeichen einmal durchlaufen und dann das Array wieder zu einem String machen ...
ich werd mal beide Ansätze durchgehen und sehen was mir besser liegt, vielen Dank!
 

Neue Themen


Zurück
Oben