指定された char 配列のすべての可能な組み合わせを生成するために、配列を反復処理しようとしています。
指定した長さが 4 の場合、配列内の文字のすべての組み合わせを長さ 4 まで繰り返します。
次のようになります。
char[] charArray = "abcdefghijklmnopqrstuvwxyz".toCharArray();
私が欲しいメソッドの出力:
a, b, c, ..., x, y, z, aa, ab, ac, ..., ax, ay, az, ba, bb, bc, ..., bx, by, bz, ca, cb、cc、... zzzx、zzzy、zzzz
ここにいくつかのコードがあります:
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;
}
私が考えることができる唯一の方法は、多くの IF ステートメントを使用することです。それをより適切に行うアルゴリズムまたは方法はありますか? そうでない場合、2 人以上のキャラクターを扱う方法について何か提案はありますか?
編集:
azだけでなく、ソートされていないchar配列でも機能するようにしたい。
私が見つけたすべての実装は、ソートされた配列に対してのみ機能します..