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

如何生成字符串中单词的相邻空格可选全量组合?

解决单词间空格可选组合生成问题

需求说明

给定字符串,生成所有相邻单词间空格可选(保留或去除)的组合。例如输入 "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)}")

代码解释

  1. string.split() 将输入字符串拆分为单词列表,比如 "This is cat" 拆成 ["This", "is", "cat"]。
  2. itertools.product([False, True], repeat=len(args)-1) 生成所有间隙的空格选择组合:3个单词有2个间隙,所以生成4种组合:(True, True)、(True, False)、(False, True)、(False, False)。
  3. 遍历每个组合,从第一个单词开始,依次根据组合中的布尔值决定是否添加空格,拼接后续单词,最终得到完整的字符串。
  4. 最后按示例格式输出所有结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:01:01