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

Word Permutation Generator:修改程序实现无重复单词全组合展示

搞定单词全组合去重的问题

我太懂这种找了一圈示例都不对味的感觉了——想生成一个单词字符串的所有可能组合,结果现有程序还一个劲输出重复内容,确实闹心。下面给你两种实用的解决思路,都是Python实现,你可以按需选:

思路一:简单粗暴型——用排列工具+集合去重

Python的itertools.permutations能直接生成所有排列,但碰到单词里有重复字符的时候就会出重复结果,这时候用集合自动去重就很方便:

from itertools import permutations

def get_unique_word_combinations(word):
    unique_results = set()
    # 生成从1个字符到全长度的所有排列
    for combo_length in range(1, len(word)+1):
        for char_group in permutations(word, combo_length):
            unique_results.add(''.join(char_group))
    # 转成排序后的列表,看着更整齐
    return sorted(unique_results)

# 试试效果
print(get_unique_word_combinations("abc"))  # 无重复字符的情况
print(get_unique_word_combinations("aab"))  # 有重复字符的情况

这个方法好处是代码短,上手快;缺点是如果单词很长,生成大量重复排列再去重会有点费性能,适合短单词场景。

思路二:高效优化型——回溯法提前去重

要是你处理的单词比较长或者重复字符多,那用回溯算法在生成过程中就跳过重复分支会更高效:

def get_unique_combinations_backtrack(word):
    # 先把字符排序,让重复的挨在一起,方便后续判断
    sorted_chars = sorted(word)
    results = []
    # 用一个数组标记字符是否被用过
    used = [False] * len(sorted_chars)

    def backtrack(current_combo, target_length):
        if len(current_combo) == target_length:
            results.append(''.join(current_combo))
            return
        for i in range(len(sorted_chars)):
            if used[i]:
                continue
            # 关键:如果当前字符和前一个相同,且前一个没被用,说明是重复的分支,直接跳过
            if i > 0 and sorted_chars[i] == sorted_chars[i-1] and not used[i-1]:
                continue
            used[i] = True
            current_combo.append(sorted_chars[i])
            backtrack(current_combo, target_length)
            # 回溯,撤销选择
            current_combo.pop()
            used[i] = False

    # 生成所有长度的组合
    for length in range(1, len(sorted_chars)+1):
        backtrack([], length)
    return results

# 测试一下
print(get_unique_combinations_backtrack("aab"))

这种方法从根源上避免了重复生成,性能会好很多,适合复杂场景。

小提醒

要是你要的是「组合」(比如ab和ba算同一个,不区分顺序),那把permutations换成combinations就行,同样可以用这两种方式去重。要是只需要固定长度的组合,调整一下循环的长度范围就ok。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:03:57