我有形式的字符串000011122222.也就是说,连续数字重复随机没有.时间.其他一些例子可能是:
0011122223333
01222
00011234444
001122222
Run Code Online (Sandbox Code Playgroud)
等等.我知道,对于一个字符串01222来说,总共可以进行5!/3!排列.我需要为每个这样的字符串生成所有这些排列.
我已尝试通过各种方法生成排列.一种是通过生成所有可能的排列(就像没有重复的字符串一样),但由于我将使用的字符串可能非常大,这可能浪费时间产生太多的冗余排列.
其次,我尝试将数字放在字符数组的随机索引处等于字符串的大小,并在数字计数与输入字符串相同时终止循环.但是,这样我浪费了大量的内存,也占用了大量的时间.
我需要一种有效的方法来为这些字符串生成排列.只是一个算法或代码,欢迎.我正在使用Java.
谢谢!
用于生成排列的标准算法之一是用于按字典顺序递增的顺序列出它们的算法.该算法由C++ std::next_permutation算法的大多数实现使用,在每个排列的最多O(n)时间内生成排列,并且跳过彼此重复的所有排列.编码也非常容易.
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
1855 次 |
| 最近记录: |