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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie versuchen, diese: