我知道这个问题已经被问了很多次,但我正在寻找一种非常快速的算法来生成长度为8的字符串的所有排列。 我正在尝试生成一个长度为8的字符串,其中字符串中的每个字符可以是0-9或a-z字符(共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万个字符串。我正在寻找一种比这更快的算法。
我尝试了递归方法,但似乎运行速度比这个方法要慢。有什么建议吗?
String.format()
,使用和重用StringBuilder
或者甚至是char
数组可以显著提高性能。 - JimmyB