🌗 345. 反转字符串中的元音字母

吞佛童子2022年10月10日
  • algorithm
  • String
小于 1 分钟

🌗 345. 反转字符串中的元音字母

难度: 🌗

问题描述

img_9.png


解法

class Solution {
    public String reverseVowels(String s) {
        //  思路:
        // 双指针
        int len = s.length();
        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');

        int i = 0;
        int j = len - 1;
        char[] arr = s.toCharArray();
        while(i < j) {
            while(i < j && !set.contains(arr[i])) {
                i ++;
            }
            while(i < j && !set.contains(arr[j])) {
                j --;
            }
            if(i < j) {
                swap(arr, i, j);
                i ++;
                j --;
            }
        }
        StringBuilder sb = new StringBuilder();
        for(int k = 0; k < len; k ++) {
            sb.append(arr[k]);
        }
        return sb.toString();
    }

    private void swap(char[] arr, int i, int j) {
        char tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
    }
}

输出

img_8.png

上次编辑于: 2022/10/10 下午8:43:48
贡献者: liuxianzhishou