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

给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。

元音字母包括 ‘a’、’e’、’i’、’o’、’u’,且可能以大小写两种形式出现不止一次。

示例 1:

输入:s = "hello"
输出:"holle"

示例 2:

输入:s = "leetcode"
输出:"leotcede"

提示:

  • 1 <= s.length <= 3 * 105
  • s 由 可打印的 ASCII 字符组成

Solution 1

class Solution {
    public String reverseVowels(String s) {
        StringBuilder sBuilder = new StringBuilder(s);
        int start = 0, end = s.length() - 1;
        while (start < end) {
            while (start < end && !isVowel(sBuilder.charAt(start))) {
                start++;
            }
            while (start < end && !isVowel(sBuilder.charAt(end))) {
                end--;
            }
            char temp = sBuilder.charAt(start);
            sBuilder.setCharAt(start, sBuilder.charAt(end));
            sBuilder.setCharAt(end, temp);
            start++;
            end--;
        }
        return sBuilder.toString();
    }

    private boolean isVowel(char c) {
        boolean result = false;
        switch (c) {
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
            case 'A':
            case 'E':
            case 'I':
            case 'O':
            case 'U':
                result = true;
                break;
            default:
                break;
        }
        return result;
    }
}