Permutiere einen String in Groß- und Kleinschreibung

7

Ich habe eine Zeichenfolge, "abc". Wie würde ein Programm (wenn möglich in Java) aussehen, das die Zeichenfolge permutiert?

Zum Beispiel:

%Vor%     
Francisco 22.07.2011, 03:31
quelle

6 Antworten

12

So etwas sollte den Trick machen:

%Vor%     
Erik Pilz 22.07.2011 04:24
quelle
6

Wie Sie wahrscheinlich bereits wissen, ist die Anzahl der möglichen Kombinationen 2 ^ n , wobei n gleich der Länge der Eingabezeichenfolge ist.

Da n theoretisch ziemlich groß sein könnte, besteht die Möglichkeit, dass 2 ^ n die Kapazität eines primitiven Typs wie int . (Der Benutzer muss möglicherweise ein paar Jahre warten, bis alle Kombinationen den Druckvorgang beendet haben, aber das ist ihre Aufgabe.)

Verwenden wir stattdessen einen Bitvektor, um alle möglichen Kombinationen zu speichern. Wir setzen die Anzahl der Bits auf n und initialisieren sie alle auf 1. Wenn beispielsweise die Eingabezeichenfolge "abcdefghij" lautet, sind die anfänglichen Bitvektorwerte {1111111111}.

Für jede Kombination müssen wir einfach alle Zeichen in der Eingabezeichenfolge durchlaufen und jedes in Großbuchstaben setzen, wenn das entsprechende Bit eine 1 ist, ansonsten auf Kleinbuchstaben setzen. Wir dekrementieren dann den Bitvektor und wiederholen.

Zum Beispiel würde der Prozess für eine Eingabe von "abc" so aussehen:

Bits: Entsprechende Combo:
111 ABC
110 ABc
101 Abc
100 Abc
011 aBC
010 aBc
001 abC
000 abc

Durch die Verwendung einer Schleife anstelle eines rekursiven Funktionsaufrufs vermeiden wir auch die Möglichkeit einer Stapelüberlauf-Ausnahme bei großen Eingabezeichenfolgen.

Hier ist die eigentliche Implementierung:

%Vor%     
Kevin D. 22.07.2011 09:20
quelle
4
%Vor%     
Eugenio Lopez 15.07.2016 23:30
quelle
0

Ich bin mir nicht sicher, ob das funktionieren wird, da ich Java seit drei Jahren nicht mehr benutzt habe, aber ich habe es zuerst in PHP geschrieben und es funktionierte. Es gibt ein Array zurück, das alle permutierten Strings enthält. Es ist eine rekursive Methode:

%Vor%

Wenn Sie interessiert sind, ist die PHP, die ich kenne, funktioniert:

%Vor%     
Paulpro 22.07.2011 03:58
quelle
0

Hier finden Sie das Code-Snippet für das oben genannte:

%Vor%

}

    
Swagatika 22.07.2011 04:29
quelle
0

Sie können etwas wie

tun

'' '

%Vor%

'' '

    
Yash Bansal 09.03.2018 21:01
quelle