[LC] 345. Reverse Vowels of a String

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

Example 1:

Input: "hello"
Output: "holle"

Example 2:

Input: "leetcode"
Output: "leotcede"


class Solution {
    public String reverseVowels(String s) {
        if (s == null || s.length() == 0) {
            return s;
        }
        char[] charArr = s.toCharArray();
        int start = 0, end = charArr.length - 1;
        while (start < end) {
            if (!isVowel(charArr[start])) {
                start += 1;
            } else if (!isVowel(charArr[end])) {
                end -= 1;
            } else {
                char tmp = charArr[start];
                charArr[start] = charArr[end];
                charArr[end] = tmp;
                start += 1;
                end -= 1;
            }
        }
        return new String(charArr);
    }
    
    private boolean isVowel(Character c) {
        return c == 'a' || c == 'A' || c == 'e' || c == 'E' || c == 'i' || c == 'I' || c == 'o' || c == 'O' || c == 'u' || c == 'U';
    }
}

 

posted @ 2020-01-03 11:40  xuan_abc  阅读(106)  评论(0编辑  收藏  举报