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

Python如何生成字符串辅音元音交替的全长度去重排列?

实现辅音元音交替排列的生成方案

核心修改思路:在原有排列生成逻辑的基础上,新增交替规则校验逻辑,过滤不符合要求的排列即可。

完整实现代码

from itertools import permutations

# 定义元音集合,可根据需求调整匹配范围
VOWELS = {'A', 'E', 'I', 'O', 'U'}

def is_valid_perm(s):
    # 单字符排列天然符合规则
    if len(s) == 1:
        return True
    # 校验所有相邻字符的元音/辅音属性是否不同
    for i in range(len(s)-1):
        curr_is_vowel = s[i].upper() in VOWELS
        next_is_vowel = s[i+1].upper() in VOWELS
        if curr_is_vowel == next_is_vowel:
            return False
    return True

def get_alt_perms(string_):
    # 生成所有长度的排列,去重后过滤符合规则的结果
    all_perms = set(''.join(j) for i in range(1, len(string_) + 1) for j in permutations(string_, i))
    return [p for p in all_perms if is_valid_perm(p)]

效果验证

调用get_alt_perms('BANANA')即可得到符合要求的输出:

  • 合法排列会被保留:如B、A、N、BA、AN、NA、BAN、BANA等
  • 非法排列会被过滤:如BN(辅音接辅音)、NB(辅音接辅音)、AA(元音接元音)等

可选优化说明

如果输入字符串包含小写字符无需额外修改,校验逻辑已经默认做了大小写不兼容处理;如果需要自定义元音范围,直接修改VOWELS集合即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:45:03