1 题目描述
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
示例 1:
输入: “hello”
输出: “holle”
示例 2:
输入: “leetcode”
输出: “leotcede”
说明:
元音字母不包含字母"y"。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-vowels-of-a-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2 解题思路
- 1.维护一个元音集合
- 2.头尾各一个指针
- 3.碰到元音跳过
- 4.头指针碰到元音时,等待尾指针碰到元音,然后交换,否则尾指针–。
- 5.头指针小于尾指针时跳出循环。
3 解决代码
class Solution {
public String reverseVowels(String s) {
char[] chars = s.toCharArray();
//双指针
int left = 0, right = chars.length -1;
String vowel = "aeiouAEIOU";
while(left < right){
//左边找元音
while(left < right && vowel.indexOf(chars[left]) == -1){
left++;
}
//右边找元音
while(left < right && vowel.indexOf(chars[right]) == -1){
right--;
}
char temp = chars[left];
chars[left] = chars[right];
chars[right] = temp;
left++;
right--;
}
return String.valueOf(chars);
}
}