我想从给定的字符生成给定长度的字符串。字符的顺序很重要,我也希望使用多个线程来生成它。以下是一些例子:
chars: a,b,c,d
length: 1
output:
a
b
c
d
chars: a,b,c,d
length: 2
output:
aa
ab
ac
ad
bb
ba
bc
bd
cc
ca
cb
cd
dd
da
db
dc
我试过这个算法: 注意:它是伪代码
func generate(set, str, k){
if (k == 0){
print str;
return;
}
for (c in set) {
newString = str + c;
generate(set, newString, k-1);
}
}
但是我没有看到如何使用多个线程。我读过的所有其他算法都不能满足我的需求。
答案 0 :(得分:0)
此算法无需使用多线程。 for循环仅用于生成所需长度的字符串。在java中,代码就是这样。
import java.util.Random;
public class RandomString2 {
static String[] option = {"a","b","v","k"};
static String getRandomElement()
{
int idx = new Random().nextInt(option.length);
return option[idx];
}
static String getRandomString(int length)
{
String result="";
for(int i = 1; i<=length ; i++)
{
result += getRandomElement();
}
return result;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(getRandomString(5)); // pass string length as parameter
}
}