345. 反转字符串中的元音字母
给你一个字符串 s
,仅反转字符串中的所有元音字母,并返回结果字符串。
元音字母包括 'a'
、'e'
、'i'
、'o'
、'u'
,且可能以大小写两种形式出现不止一次。
示例 1:
输入:s = “hello”
输出:“holle”
示例 2:
输入:s = “leetcode”
输出:“leotcede”
提示:
1 <= s.length <= 3 * 10^5
s由 可打印的 ASCII 字符组成
class Solution {
public String reverseVowels(String s) {
char[] c = s.toCharArray();
for (int i = 0, j = s.length() - 1; i < j; i++, j--) {
while (i < j && !isVowel(c[i])) i++;
while (i < j && !isVowel(c[j])) j--;
if (i < j) swap(c, i, j);
}
return new String(c);
}
public boolean isVowel(char c) {
return "aeiouAEIOU".indexOf(c) >= 0;
}
public void swap(char[] c, int i, int j) {
c[i] ^= c[j];
c[j] ^= c[i];
c[i] ^= c[j];
}
}