如何生成字符串中单词的相邻空格可选全量组合?
解决单词间空格可选组合生成问题
需求说明
给定字符串,生成所有相邻单词间空格可选(保留或去除)的组合。例如输入 "This is cat",需输出:
"This is cat" "Thisis cat" "This iscat" "Thisiscat"
原代码问题分析
你写的代码逻辑嵌套错误:外层循环遍历间隙位置,内层遍历排列,导致每个结果只重复拼接了单个单词,完全没按每个排列去构建完整字符串。
修正后的代码
import itertools string = "This is cat" args = string.split() # 生成n-1个间隙的所有空格选择组合(True=加空格,False=不加) permutations = itertools.product([False, True], repeat=len(args)-1) result = [] for perm in permutations: # 从第一个单词开始构建字符串 current = args[0] # 遍历每个间隙和对应的后续单词 for i in range(len(perm)): if perm[i]: current += " " + args[i+1] else: current += args[i+1] result.append(current) # 按示例格式输出结果 for idx, s in enumerate(result, 1): print(f"str{idx} = {repr(s)}")
代码解释
string.split()将输入字符串拆分为单词列表,比如"This is cat"拆成["This", "is", "cat"]。itertools.product([False, True], repeat=len(args)-1)生成所有间隙的空格选择组合:3个单词有2个间隙,所以生成4种组合:(True, True)、(True, False)、(False, True)、(False, False)。- 遍历每个组合,从第一个单词开始,依次根据组合中的布尔值决定是否添加空格,拼接后续单词,最终得到完整的字符串。
- 最后按示例格式输出所有结果。
内容的提问来源于stack exchange,提问作者saul santos
相关产品推荐
相关产品推荐

