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.
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.
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 ...)
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!
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.
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 ...
Das wäre natürlich die optimierte Variante. Ich bin beim Swap stehen geblieben
@GAZ, setz lieber die von @httpdigest und @kneitzel genannte Variante um. Die ist wesentlich effizienter, außerdem sollst Du ja auch noch was zu tun haben.
Das wäre natürlich die optimierte Variante. Ich bin beim Swap stehen geblieben
@GAZ, setz lieber die von @httpdigest und @kneitzel genannte Variante um. Die ist wesentlich effizienter, außerdem sollst Du ja auch noch was zu tun haben.
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 ...