我知道这个问题已经被问过很多次了,但是我正在寻找一种非常快速的算法来生成长度为 8 的字符串的所有排列。我正在尝试生成一个长度为 8 的字符串,其中字符串中的每个字符都可以是任何字符 0-9 或 az(总共 36 个选项)。目前,这是我必须这样做的代码:
for(idx[2] = 0; idx[2] < ch1.length; idx[2]++)
for(idx[3] = 0; idx[3] < ch1.length; idx[3]++)
for(idx[4] = 0; idx[4] < ch1.length; idx[4]++)
for(idx[5] = 0; idx[5] < ch1.length; idx[5]++)
for(idx[6] = 0; idx[6] < ch1.length; idx[6]++)
for(idx[7] = 0; idx[7] < ch1.length; idx[7]++)
for(idx[8] = 0; idx[8] < ch1.length; idx[8]++)
for(idx[9] = 0; idx[9] < ch1.length; idx[9]++)
String name = String.format("%c%c%c%c%c%c%c%c%c%c",ch1[idx[0]],ch2[idx[1]],ch3[idx[2]],ch4[idx[3]],ch5[idx[4]],ch6[idx[5]],ch7[idx[6]],ch8[idx[7]],ch9[idx[8]],ch10[idx[9]]);
如您所见,这段代码无论如何都不漂亮。此外,此代码每秒可以生成 28 万个字符串。我正在寻找一种比这更快的算法。
我尝试了一种递归方法,但这似乎比这种方法运行得慢。建议?