编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
示例 1:
输入: "hello"
输出: "holle"
示例 2:
输入: "leetcode"
输出: "leotcede"
说明:
元音字母不包含字母"y"。
解题思想:题目和之前的反转字符串类似,只不过这次多了个字符串排除,仍然是头尾双指针来解决。
public String reverseVowels(String s) { HashSet<Character> set = new HashSet<Character>() { { add('a'); add('o'); add('e'); add('i'); add('u'); add('A'); add('O'); add('E'); add('I'); add('U'); } }; int i = 0, j = s.length() - 1; char[] result = new char[s.length()]; while (i <= j) { char ci = s.charAt(i); char cj = s.charAt(j); if (!set.contains(ci)) { result[i++] = ci; } else if (!set.contains(cj)) { result[j--] = cj; } else { result[i++] = cj; result[j--] = ci; } } return new String(result); }