345. Reverse Vowels of a String

Problem

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

Example 1:
Given s = "hello", return "holle".

Example 2:
Given s = "leetcode", return "leotcede".

Note:
The vowels does not include the letter "y".

Solution

Basic

public class Solution {
    public static final Set<Character> vowelsSet;
    
    static {
        // initialize a list from an Character array
        List<Character> vowelsList = Arrays.asList(
            new Character[]{'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'});
        // use unmodifiableSet
        vowelsSet = Collections.unmodifiableSet(new HashSet<>(vowelsList));
    }

    public String reverseVowels(String s) {
        if (s == null) {
            return null;
        }

        char[] chars = s.toCharArray();
        int i = -1;
        int j = s.length();

        while (i < j) {
            while (++i < j && !vowelsSet.contains(chars[i])) {}
            while (i < --j && !vowelsSet.contains(chars[j])) {}
            
            if (i >= j) {
                break;
            }
            
            swap(chars, i, j);
        }

        return String.valueOf(chars);
    }

    public void swap(char[] chars, int i, int j) {
        char tmp = chars[i];
        chars[i] = chars[j];
        chars[j] = tmp;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容