如何使用指定字符串拼接规则生成全部去重的可能结果
Python实现方案
你提供的原始代码存在无限循环问题,且默认逻辑无法覆盖所有预期的2187种组合,调整后的实现逻辑如下:
- 拼接规则说明:最终生成的7位字符串固定由三部分拼接而成:
- 取第一个源字符串索引
[2:5]的3个字符 - 取第二个源字符串索引
[5:7]的2个字符 - 取第三个源字符串索引
[:2]的2个字符
- 取第一个源字符串索引
- 用Python内置的
set类型存储结果,利用集合自动去重的特性直接过滤重复值。 - 对应3^7=2187总数要求的实现代码如下:
# 初始化三个原始字符串 L1 = "123abcd" L2 = "456fghi" L3 = "789vwxy" # 初始合法字符串集合 current_strs = {L1, L2, L3} # 存储所有结果的集合,自动去重 all_results = set(current_strs) # 迭代7次生成所有符合要求的组合 for _ in range(7): new_strs = set() # 遍历所有可重复的三元组作为拼接源 for a in current_strs: for b in current_strs: for c in current_strs: Lt = a[2:5] + b[5:7] + c[:2] new_strs.add(Lt) # 更新结果集和当前轮次的字符串集合 all_results.update(new_strs) current_strs = new_strs # 最终去重后的结果可转成列表使用 unique_result = list(all_results) print(f"去重后有效字符串数量:{len(unique_result)}")
内容的提问来源于stack exchange,提问作者LeaC
相关产品推荐
相关产品推荐

