こんにちは、指定したchar配列の繰り返しですべての組み合わせを取得しようとしています。 文字配列はアルファベット文字(下位のみ)で構成されており、長さが30文字以上の文字列を生成する必要があります。C#大きな文字セットの繰り返しでのChar置換文字列
私は多くのfor-loopのメソッドを試しましたが、文字列の長さがchar配列のcharのすべての組み合わせを5つ以上取得しようとすると、メモリ例外が発生します。
私は、最初の200000文字列、次に2000000文字しか取らない同様のメソッドを作成しました。これは、実績のあるものではあるが、長さの短い文字列でしか検証されませんでした。どんなそこの方法でそう前述したと私は私が30のlenghtsと文字列になるだろうforループ30を追加しようとしましたが、アプリケーションがちょうどhangs.Is
public static int Progress = 0;
public static ArrayList CreateRngUrl7()
{
ArrayList AllCombos = new ArrayList();
int passed = 0;
int Too = Progress + 200000;
char[] alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToLower().ToCharArray();
for (int i = 0; i < alpha.Length; i++)
for (int i1 = 0; i1 < alpha.Length; i1++)
for (int i2 = 0; i2 < alpha.Length; i2++)
for (int i3 = 0; i3 < alpha.Length; i3++)
for (int i4 = 0; i4 < alpha.Length; i4++)
for (int i5 = 0; i5 < alpha.Length; i5++)
for (int i6 = 0; i6 < alpha.Length; i6++)
{
if (passed > (Too - 200000) && passed < Too)
{
string word = new string(new char[] { alpha[i], alpha[i1], alpha[i2], alpha[i3], alpha[i4], alpha[i5],alpha[i6] });
AllCombos.Add(word);
}
passed++;
}
if (Too >= passed)
{
MessageBox.Show("All combinations of RNG7 were returned");
}
Progress = Too;
return AllCombos;
}
:
これは、7文字の長さと私の方法でしたこれを行うより良い方法は?すべての答えが高く評価されるだろう。前もって感謝します!
もっと大きな脚の文字列でどのように処理されているかを誰かに教えてください。ちょうど例を見たいですか?私はそのデータを格納する必要はありません、私はそれを何かと比較し、メモリから解放する必要があります。私はアルファベットを使用しました。たとえば、アルファベット全体を必要としませんでした。時間はかかりませんでしたか、どのくらいの組み合わせがありますか!!!!!
char配列のすべての組み合わせの長さが30を超えるようにしたいですか?がんばろう!あなたはすぐにいつでもそれを必要としますか? – AndrewC
私は多数のコンピュータにアクセスできます。私は方法例が必要です。 – formatc
最後に30文字の文字列があり、長さがそれぞれ30であることに気づきます。これは1.6 * 10^34バイトです。あなたがグーグルでない限り、それを保存することはできません。 –