Iteration durch ein Zeichen-array in Java - Verbesserung Algorithmus

Ich versuche zu Durchlaufen, mein array, um alle möglichen Kombinationen der gegebenen char-array.

Wenn die Länge I angeben, ist 4, dann möchte ich es zum Durchlaufen aller Kombinationen von chars im array bis zu einer Länge von 4.

Es würde in etwa so Aussehen:

char[] charArray = "abcdefghijklmnopqrstuvwxyz".toCharArray();

Ausgabe der Methode, die ich will:

a
b,
c,
...,
x,
y,
z,
aa,
ab
ac,
...,
ax,
ay,
az,
ba,
bb,
bc,
...,
bx,
durch
bz,
ca,
cb,
cc,
...
zzzx,
zzzy,
zzzz

Hier einige code:

cs = charArray;
cg = new char[4]; //4 up to 4 characters to guess

int indexOfCharset = 0; //should I be using all these?
int indexOfCurrentGuess = 0;
int positionInString = 0;

public void incrementNew() {
    //1 DIGIT guesses
    if (cg.length == 0) {
        if (indexOfCharset == cs.length) {
            cg = new char[cg.length + 1];
        } else {
            cg[positionInString] = nextChar();
        }
    }
    //2 DIGIT guesses
    else if (cg.length == 1) {
        if (cg[0] == cs.length && cg[1] == cs.length) {
            cg = new char[cg.length + 1];
        } else {
            ... Something goes here <-
            cg[positionInString] = nextChar();
        }
    }
    System.out.println("cg[0]=" + cg[0]);
}

public char nextChar() {
    char nextChar;
    if (indexOfCharset < cs.length) {
        nextChar = cs[indexOfCharset];
    } else {
        indexOfCharset = 0;
        nextChar = cs[indexOfCharset];
    }
    indexOfCharset++;
    //System.out.println("nextChar = " + nextChar);
    return nextChar;

}

Nur so kann ich mir vorstellen, es zu tun ist viel, WENN Aussagen - gibt es einen Algorithmus oder die Art und Weise, es zu tun, ordentlicher? Wenn nicht, irgendwelche Vorschläge auf, wie man mit zwei oder mehr Zeichen?

EDIT:

Ich will, dass es funktioniert für die normalen char-arrays nicht nur a-z.

Alle Implementierungen, die ich gefunden habe funktionieren nur für sortierte arrays..

  • Ich denke, der code in dieser Antwort: "Brute-Force-Algorithmus w/Java-String Übergeben Fehler" ist genau das, was Sie suchen. Sie würde ändern, eine Zeile in der main-Methode zu BruteForceIterator bit = new BruteForceIterator('a', 'z', 4);
  • Sie wollen eine Power set versuchen dieser.
  • Was ist, wenn ich wollte zahlen und Kleinbuchstaben? Auch es funktioniert nicht, wenn ich die Reihenfolge der char-set. Ich will, dass es sich mit jeder char-set. E. g. Buchstaben, zahlen, Zeichen. Nicht nur A-Z.
InformationsquelleAutor silverzx | 2013-03-07
Schreibe einen Kommentar