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

LeetCode与本地终端输出不一致求助——反转字符串元音字母

问题原因与解决方案

你的代码在本地运行正常但LeetCode上输出错误,核心原因是使用字典存储元音字符的索引和值时,在Python 3.7之前的版本中字典不保留插入顺序。这会导致后续获取的键(索引)和值(元音)的顺序混乱,最终替换时映射关系错误。

修正后的代码

def reverseVowels(s):
    vowels_set = {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'}
    indices = []
    vowels = []
    
    # 按顺序收集元音的索引和字符
    for idx, char in enumerate(s):
        if char in vowels_set:
            indices.append(idx)
            vowels.append(char)
    
    # 反转元音列表
    reversed_vowels = vowels[::-1]
    
    # 将字符串转为列表以便修改(Python字符串不可变)
    s_list = list(s)
    
    # 替换对应位置的元音
    for idx, vowel in zip(indices, reversed_vowels):
        s_list[idx] = vowel
    
    return ''.join(s_list)

关键改进点

  1. 使用列表替代字典:用两个列表分别按顺序存储元音的索引和字符,确保顺序与原字符串中出现的顺序一致,不受Python版本影响。
  2. 反转元音列表:直接反转收集到的元音列表,保证原字符串中第一个元音对应反转后的最后一个元音,以此类推。
  3. 列表操作更高效:将字符串转为列表进行修改,避免每次修改字符串都创建新对象,提升性能。

测试示例:
输入 "race a car",输出 "raca e car",符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:08:08