string - 生成字符串所有可能排列的列表

标签 string language-agnostic cross-platform permutation combinatorics

我将如何生成一个长度为 x 和 y 字符之间的字符串的所有可能排列的列表,其中包含可变的字符列表。

任何语言都可以,但它应该是可移植的。

最佳答案

有多种方法可以做到这一点。常见的方法使用递归、内存或动态编程。基本思想是,生成长度为 1 的所有字符串的列表,然后在每次迭代中,对于上次迭代中生成的所有字符串,分别添加与字符串中的每个字符连接的字符串。 (下面代码中的变量索引跟踪上一次和下一次迭代的开始)

一些伪代码:

list = originalString.split('')
index = (0,0)
list = [""]
for iteration n in 1 to y:
  index = (index[1], len(list))
  for string s in list.subset(index[0] to end):
    for character c in originalString:
      list.add(s + c)

然后,您需要删除长度小于 x 的所有字符串,它们将是列表中的第一个 (x-1) * len(originalString) 条目。

关于string - 生成字符串所有可能排列的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/361/

相关文章:

language-agnostic - 你如何使用 +-*/实现 XOR?

c++ - Borland 字符串::查找错误

language-agnostic - 以编程方式定位形状——高效打包

string - Xcode 字符串搜索算法

algorithm - 节点的最优物理排序

c# - 在单个项目中使用多个平台

c++ - 在不使用数据库的情况下在进程之间共享设置?

C++ Qt 5.10 Cross compiling for Raspberry PI 3 此应用程序无法启动,因为它无法在 "xcb"中找到或加载 Qt 平台插件 ""

java - 在 java (android) 中不重复生成随机数组 String[]

string - Perl比较运算符和字符串化 "numbers"