从给定字符

时间:2016-07-06 17:14:59

标签: multithreading algorithm language-agnostic

我想从给定的字符生成给定长度的字符串。字符的顺序很重要,我也希望使用多个线程来生成它。以下是一些例子:

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);
    }
}

但是我没有看到如何使用多个线程。我读过的所有其他算法都不能满足我的需求。

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

}

}