在Java中重复排列(字符串的形式为:00001112222)
发布时间:2020-12-14 05:39:58 所属栏目:Java 来源:网络整理
导读:我有000011122222形式的字符串.也就是说,连续数字重复随机没有.时间.其他一些例子可能是: 001112222333301222 00011234444001122222 等等.我知道,对于一个字符串01222,总共5!/ 3!排列是可能的.我需要为每个这样的字符串生成所有这些排列. 我已尝试通过各
我有000011122222形式的字符串.也就是说,连续数字重复随机没有.时间.其他一些例子可能是:
0011122223333 01222 00011234444 001122222 等等.我知道,对于一个字符串01222,总共5!/ 3!排列是可能的.我需要为每个这样的字符串生成所有这些排列. 我已尝试通过各种方法生成排列.一种是通过生成所有可能的排列(就像没有重复的字符串一样),但由于我将使用的字符串可能非常大,这可能浪费时间产生太多的冗余排列. 其次,我尝试将数字放在字符数组的随机索引处等于字符串的大小,并在数字计数与输入字符串相同时终止循环.但是,这样我浪费了大量的内存,也占用了大量的时间. 我需要一种有效的方法来为这些字符串生成排列.只是一个算法或代码,欢迎.我正在使用Java. 谢谢! 解决方法
用于生成排列的标准算法之一是
an algorithm for listing them in lexicographically increasing order.该算法由C std :: next_permutation算法的大多数实现使用,在每个排列最多O(n)时间生成排列,并跳过所有排列的重复的排列.另一个.编码也非常容易.
希望这可以帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |