Young87

当前位置:首页 >个人收藏

LeetCode345. 反转字符串中的元音字母

反转字符串中的元音字母 题目链接

编写一个函数,以字符串作为输入,反转该字符串中的元音字母。

示例 1:
输入: “hello”
输出: “holle”

思路分析:双指针法,left、right 指针遍历至元音字符时停止

两指针都遍历到元音字符时交换字符,继续遍历,指针相交结束遍历返回结果

class Solution {
    public String reverseVowels(String s) {
        if (s == null || s.length() < 2) {
            return s;
        }
        HashSet<Character> vowels = new HashSet<>( // 元音字符表
                Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'));
        StringBuilder result = new StringBuilder(s);
        int left = 0, right = result.length() - 1;
        while (left < right) {
            char charLeft = result.charAt(left),
                 charRight = result.charAt(right);
            if (!vowels.contains(charLeft)) {
                left++;
            } else if (!vowels.contains(charRight)) {
                right--;
            } else {
                result.setCharAt(left, charRight);
                result.setCharAt(right, charLeft);
                right--;
                left++;
            } 
        }
        return result.toString();
    }
}

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: LeetCode455. 分发饼干

下一篇: 彻底讲清楚TCP半连接队列和全连接队列

精华推荐