如何获得具有固定字符位置的字符串的所有组合?

时间:2011-09-07 23:56:26

标签: php string permutation combinations

我需要找到一种方法来生成具有特定字符的字符串的所有组合,以便始终在PHP中显示。

例如,给定一个字符串'ABCD',并且我想获得字符串的所有组合,并且字符'B'存在,我想得到:

数组('B', 'BC', 'BCD', 'B D', 'AB', 'ABC', 'AB D', 'ABCD')

缺少的字符将替换为空格。有人有什么想法吗?

1 个答案:

答案 0 :(得分:6)

如果你认为字符串中的每个字母都是“开”或“关”,这很容易 - 就像二进制数中的一点一样。事实上,你可以代表它。

因此,请将您的字符串视为四位数,可以是0b0000 = 0 = ""0b1111 = 15 = "ABCD"之间的任何数字。然后你可以遍历从0到15的所有数字,并通过查看设置的位来找到相应的“排列”。

例如,“置换”6:0b0110 -> " BC "

希望有所帮助!

PS:如果这是家庭作业,你应该这样标记 - 这里有点失礼。

PPS:您的“permutations”实际上是“combinations.”与维基百科相关联,以防您感到好奇。

相关问题