如何实现二进制序列中x占位符替换为0/1的全序列枚举
实现思路
先统计输入二进制串中x的总个数n,所有可能的完整序列总数固定为2n种,每一种组合对应一个n位二进制数。遍历0到2n-1的所有整数,将每个整数转为固定n位的二进制串,按顺序替换原串中的x即可,天然适配x数量可变的场景。
Python 实现代码
def generate_all_binary(origin_str): # 记录所有x在原串中的索引位置 x_indexes = [idx for idx, char in enumerate(origin_str) if char == 'x'] x_total = len(x_indexes) result = [] # 遍历所有0/1组合可能 for num in range(2 ** x_total): # 整数转成x_total位的二进制串,补前导0对齐长度 replace_bits = bin(num)[2:].zfill(x_total) str_list = list(origin_str) # 逐位替换x for idx, bit in zip(x_indexes, replace_bits): str_list[idx] = bit result.append(''.join(str_list)) return result # 调用测试 input_str = "01010xx101xxx001" output_list = generate_all_binary(input_str) for binary in output_list: print(binary)
方案特性
- 适配任意x数量:只要x的个数不会导致2^n的量级超出内存承受范围即可正常运行,x数量小于20时运行效率极高
- 替换逻辑准确:严格按照原串中x出现的先后顺序替换对应0/1,不会出现顺序错乱
- 输出格式统一:所有输出序列长度和原输入序列完全一致,无额外冗余字符
简单测试验证:输入为
"x1x"时,输出结果为["010", "011", "110", "111"],符合预期要求。
内容的提问来源于stack exchange,提问作者pileup
相关产品推荐
相关产品推荐

