乐趣区

关于leetcode:leetcode之反转字符串中的元音字母

本文次要记录一下 leetcode 之反转字符串中的元音字母

题目

 编写一个函数,以字符串作为输出,反转该字符串中的元音字母。示例 1:输出:"hello"
输入:"holle"
示例 2:输出:"leetcode"
输入:"leotcede"
 

提醒:元音字母不蕴含字母 "y"。起源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-vowels-of-a-string
著作权归领扣网络所有。商业转载请分割官网受权,非商业转载请注明出处。

题解

class Solution {Set<Character> set = new HashSet(){{add('a');
        add('e');
        add('i');
        add('o');
        add('u');
        add('A');
        add('E');
        add('I');
        add('O');
        add('U');
    }};

    public String reverseVowels(String s) {
        int i = 0;
        int j = s.length() - 1;
        char[] chars = s.toCharArray();
        while(i < j) {while (!set.contains(chars[i]) && i<j) {i++;}
            while (!set.contains(chars[j]) && i<j) {j--;}
            if (i < j) {char tmp = chars[i];
                chars[i] = chars[j];
                chars[j] = tmp;
                i++;
                j--;
            }
        }
        return new String(chars);
    }
}

小结

这里先应用 HashSet 寄存大小写的元音字母,之后应用头尾指针同时对字符串数组进行遍历,当 i 指向的字符与 j 指向的字符都是元音时,进行替换同时更新指针,不是元音字符时仅仅更新指针。

doc

  • 反转字符串中的元音字母
退出移动版