📌  相关文章
📜  查找数组中不存在的给定大小的二进制字符串的任何排列(1)

📅  最后修改于: 2023-12-03 15:26:38.072000             🧑  作者: Mango

查找数组中不存在的给定大小的二进制字符串的任何排列

当需要查找数组中不存在的给定大小的二进制字符串的任何排列时,我们可以使用以下算法:

  1. 生成所有可能的二进制字符串排列
  2. 遍历数组,检查每个字符串是否在生成的排列中出现
  3. 返回不存在于排列中的字符串

具体实现的步骤如下:

首先,我们需要编写一个用于生成给定长度的所有二进制字符串排列的函数:

def generate_permutations(length):
    if length == 1:
        return [['0'], ['1']]
    else:
        prev = generate_permutations(length-1)
        res = []
        for p in prev:
            res.append(p + ['0'])
            res.append(p + ['1'])
        return res

这个函数使用递归将所有可能的排列生成出来。

接下来,我们可以用以下方法遍历数组并检查每个字符串是否存在于排列中:

def find_missing_permutations(arr, length):
    perms = ["".join(p) for p in generate_permutations(length)]
    missing = []
    for a in arr:
        if a not in perms:
            missing.append(a)
    return missing

这个函数首先生成所有可能的排列,然后遍历输入数组,并将不存在于排列中的字符串添加到一个数组中。

最后,我们可以调用这个函数并打印返回结果:

arr = ["0110", "1001", "0101"]
missing = find_missing_permutations(arr, 4)
print(missing)

这将输出任何长度为4的二进制字符串排列中不存在的字符串。

以上就是查找数组中不存在的给定大小的二进制字符串的任何排列的算法及其实现。