String Elemente bzw. Buchstaben miteinander vertauschen?

stockhausen

Mitglied
Hallo Zusammen,

ich habe keine Idee, wie ich ein Methode schreiben muss, der einen beliebigen String einliest und die einzelnen Buchstaben miteinander vertauscht!

String str = "abc";

Die Methode soll folgendes ausgeben: cab oder acb

Hat jemand eine Idee, wie ich mein Vorhaben realisieren kann?

Grüße,
Michael
 
Eine Möglichkeit:
Java:
	public static String shuffleString(String s){
		StringBuilder src = new StringBuilder(s);
		StringBuilder result = new StringBuilder();
		while(src.length()>0){
			int randomIndex = (int) (Math.random()*src.length());
			result.append(src.charAt(randomIndex));
			src.delete(randomIndex, randomIndex+1);
		}
		return result.toString();
	}
 
Du hast eine sehr ungenaue Beschreibung deines Vorhabens abgegeben, da kann man dir schwer weiterhelfen.

Die Methode soll folgendes ausgeben: cab oder acb
Warum gerade diese beiden? Es gibt insgesamt sechs Kombinationen: abc, acb, bac, bca, cab, cba.

Da aber abc ja der eingelesene String ist entfällt die erste Möglichkeit.

Genaugenomen gibt es dann
Code:
3! - 1 = 5
Kombinationen (! = Fakultät). Bei eines String mit 4 Zeichen wären es schon
Code:
4! - 1 = 23
und bei 5 Zeichen 119. Du siehst: Die Anzahl deiner möglichen Kombinationen steigt exponentiell an.

Es gibt natürlich noch ein paar Einschränkungen: Dürfen die Buchstaben mehr als einmal an einer Position im String stehen? Was ist wenn mehrere gleiche Buchstaben vorhanden sind?

Wenn du das realisieren möchtest,dann ist das ganze über einen einfachen Brute-Force-Algorithmus zu lösen.

EDIT: Oder magst du nur eine Möglichkeit? Dann hat dir Schandro ja eine Lösung gepostet.
 
Zuletzt bearbeitet:
Du hast eine sehr ungenaue Beschreibung deines Vorhabens abgegeben, da kann man dir schwer weiterhelfen.

Das Vorhaben ist ja wohl Glaßklar ! Er will eine Methode die ihm aus einem Eingangsstring einen aus den Eingangsstring-buchstaben generierten randomstring ausgibt.

Grober Ablauf der Methode :

Eingangsstring -> Char[] Parsen
Randomzahl generieren
Zufälligen Char[] per Zufallszahl auswählen
Char[] in Ausgangsstring einsetzen
Ausgangsstring ausgeben
 
Eingangsstring -> Char[] Parsen
Randomzahl generieren
Zufälligen Char[] per Zufallszahl auswählen
Char[] in Ausgangsstring einsetzen
Ausgangsstring ausgeben

Wtf? Nunja, wenn man das ganze shuffeln wollen würde, gings so 😉
(Leider gibts keine shuffle-Methode in Arrays, sondern nur in Collections, und Arrays.asList() mit byte[] will nicht so... - auch kann man Arrays.sort() bei primitiven Arrays keinen Comparator mitgeben 🙁 )
Java:
public static String shuffle(String str) {
    List<Character> chars = new ArrayList<Character>();
    for (int i = 0; i < str.length(); i++) {
        chars.add(str.charAt(i));
    }
    Collections.shuffle(chars);
    StringBuilder sb = new StringBuilder();
    for (char c : chars) {
        sb.append(c);
    }
    return sb.toString();
}
 

Neue Themen


Zurück
Oben