如果您正在寻找创建单个随机单词,请按照以下步骤操作:
- 填充字符数组:
char[] arr = { 'a', 'b', ... , 'z'}
- 获取表示字符串大小的随机整数。
- 初始化一个空字符串
s
- 从 0 迭代到绘制的长度,在
[0,arr.length)
let it be范围内绘制一个数字x
,然后附加arr[x]
到 string s
。
如果您正在寻找所有可能性,那么您正在寻找所有组合,我认为最简单的方法是使用递归。这个想法是“猜测”第一个字符,并在字符串的后缀上运行递归 - 对第一个字符的所有第一个可能性重复此操作,你会得到所有组合。
伪代码:
getCombinations(set,idx,length,current):
if (idx == length):
set.add(copy(current))
return
for each char c:
current[idx] = c //setting the next char
getCombinations(set,idx+1,length,current) //invoking recursively on smaller range
调用getCombinations([],0,length,arr)
where[]
是一个空集,它将保存结果,length
是生成的组合的长度,并且arr
是一个空数组。
要获得更小的组合,length
您可以在过程中添加子字符串或使用更小的调用length
。
注意组合的数量在词的长度上是指数级的,所以会消耗很多时间。