You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Python无库实现的含?通配符01字符串状态枚举算法

枚举含?的二进制字符串所有可能状态的Python实现

核心思路

问题本质是对字符串中的每个?进行0/1分支遍历,无需依赖任何第三方库,可通过两种高效方式实现:

  • 迭代扩展:通过逐步更新结果列表,避免递归深度限制,适配超长字符串场景
  • 递归生成器:代码简洁直观,按需生成结果,内存占用更低

迭代实现(无递归深度限制)

从空字符串开始,逐个处理输入字符:遇到?就将现有所有结果分别追加0和1,遇到0/1则直接追加,最终得到所有可能状态:

def generate_all_states(s):
    states = ['']
    for char in s:
        temp = []
        for state in states:
            if char == '?':
                temp.append(state + '0')
                temp.append(state + '1')
            else:
                temp.append(state + char)
        states = temp
    return states

# 测试示例
input_str = '1?01?1'
for result in generate_all_states(input_str):
    print(result)

生成器递归实现(低内存占用)

用递归生成器逐个字符处理,遇到?时分叉生成两种结果,适合不需要一次性保存所有结果的场景:

def generate_all_states(s):
    if not s:
        yield ''
        return
    first = s[0]
    for rest in generate_all_states(s[1:]):
        if first == '?':
            yield '0' + rest
            yield '1' + rest
        else:
            yield first + rest

# 测试示例
input_str = '1?01?1'
for result in generate_all_states(input_str):
    print(result)

示例输出(输入1?01?1)

110111
110101
100111
100101

内容的提问来源于stack exchange,提问作者root

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 18:05:06