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

Reverse Vowels of a String双指针解法提交超时问题排查

超时问题根源分析
  • 代码逻辑存在死循环漏洞,触发超时判定:
    当左右指针同时指向元音字符时,完成交换操作后,后续的两个判断逻辑均为「当前指针指向的字符不是元音才移动指针」,此时两个指针指向的都是元音,因此都不会移动,循环条件a_pointer < b_pointer会一直成立,程序陷入无限循环。
修复方案

在完成元音交换的分支中新增指针移动逻辑即可,修改后可正常通过所有用例:

class Solution {
    public String reverseVowels(String s) {
        // O(1) 判断是否为元音
        HashSet<Character> set = new HashSet<>();
        set.add('a');
        set.add('e');
        set.add('i');
        set.add('o');
        set.add('u');
        set.add('A');
        set.add('E');
        set.add('I');
        set.add('O');
        set.add('U');
        
        char[] character = s.toCharArray();
        int a_pointer = 0;
        int b_pointer = s.length() - 1;
        
        while (a_pointer < b_pointer) {
            if (set.contains(character[a_pointer]) && set.contains(character[b_pointer])) {
                char temp = character[a_pointer];
                character[a_pointer] = character[b_pointer];
                character[b_pointer] = temp;
                // 交换完成后手动移动双指针,避免死循环
                a_pointer++;
                b_pointer--;
            } else if (!set.contains(character[a_pointer])) {
                a_pointer++;
            } else {
                b_pointer--;
            }
        }
        return new String(character);
    }
}

内容的提问来源于stack exchange,提问作者Kihoon David Choi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:57:03