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

如何修复短信缩写代码以保留全元音单词?

短信缩写编码程序修复方案

需求规则

  • 保留空格,每个单词单独编码,单词指连续字母字符串
  • 纯元音组成的单词,完全保留原内容
  • 包含至少一个辅音的单词,仅保留前一个字符不是辅音的辅音,所有元音都移除
  • 元音定义:a、e、i、o、u,其余字母为辅音

现有代码问题

当前代码无法正确处理纯元音单词,比如输入"aeiou bcdfghjklmnpqrstvwxyz",预期输出是"aeiou b",但现有代码会错误移除纯元音单词的所有字符。核心问题在于:

  1. 辅助函数逻辑混乱:
    • Vowel函数错误地将单个字符和整个元音字符串比较,永远返回0
    • isVowel返回的是元音数量,而非判断单词是否全为元音
    • noVowel函数遍历字符时却判断整个参数是否不在元音中,逻辑完全错误
  2. transform函数未先判断单词是否为纯元音,直接进入编码逻辑,导致纯元音单词被错误处理

修正后的实现方案

核心优化点

  1. 简化元音判断逻辑,用集合提升效率
  2. 新增全元音单词判断逻辑,优先处理这类单词
  3. 重构辅音编码逻辑,严格遵循“仅保留前一个字符不是辅音的辅音”规则

完整代码

# 定义元音集合,提升判断效率
VOWELS = {'a', 'e', 'i', 'o', 'u'}

def is_vowel(ch):
    """判断单个字符是否为元音"""
    return ch.lower() in VOWELS  # 可选:支持大写字母,若不需要可去掉lower()

def is_all_vowels(word):
    """判断单词是否由纯元音组成"""
    for ch in word:
        if not is_vowel(ch):
            return False
    return True

def transform(word):
    # 先判断是否是纯元音单词,是则直接返回原词
    if is_all_vowels(word):
        return word
    
    # 处理包含辅音的单词:仅保留前一个字符不是辅音的辅音
    result = []
    prev_is_consonant = False  # 标记前一个字符是否为辅音
    for ch in word:
        if is_vowel(ch):
            # 元音直接跳过
            prev_is_consonant = False
            continue
        # 当前是辅音,判断前一个是否不是辅音
        if not prev_is_consonant:
            result.append(ch)
        prev_is_consonant = True
    return ''.join(result)

def getMessage(original):
    # 拆分单词,逐个转换后用空格拼接,比循环累加更高效
    transformed_words = [transform(word) for word in original.split()]
    return ' '.join(transformed_words)

if __name__ == '__main__':
    print(getMessage("aeiou bcdfghjklmnpqrstvwxyz"))  # 输出:aeiou b
    print(getMessage("hello world"))  # 测试:h w
    print(getMessage("aeiou AEIOU"))  # 输出:aeiou AEIOU(若去掉lower()则AEIOU会被处理成A)

代码说明

  • is_vowel:简单判断单个字符是否为元音,可选支持大写字母
  • is_all_vowels:遍历单词所有字符,只要有一个非元音就返回False,确保纯元音单词被正确识别
  • transform:先判断纯元音情况,直接返回原词;对于含辅音的单词,用prev_is_consonant标记前一个字符类型,只保留首次出现的连续辅音的第一个字符
  • getMessage:用列表推导式和join替代循环累加,代码更简洁高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:05:23