LeetCode题解 -- 双指针(345)

Reverse Vowels of a String

Write a function that takes a string as input and reverse only the vowels of a string.

时间复杂度:O(n)
空间复杂度:O(n)

逻辑类似于快排

public String reverseVowels(String s) {
        int length = s.length();
        if(length <= 1)
            return s;
        Set<Character> set = new HashSet<>();
        char[] charArray = s.toCharArray();
        set.addAll(Arrays.asList('a','e','i','o','u','A','E','I','O','U'));

        int left = 0;
        int right = length - 1;
        while(left < right){
            while(left < right && !set.contains(charArray[left])){
                left++;
            }

            while(left < right && !set.contains(charArray[right])){
                right--;
            }

            char temp = charArray[left];
            charArray[left] = charArray[right];
            charArray[right] = temp;
            left++;
            right--;
        }
        return String.valueOf(charArray);
    }
发布了30 篇原创文章 · 获赞 0 · 访问量 867

猜你喜欢

转载自blog.csdn.net/fantow/article/details/104703502