编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
示例 1:
输入: "hello" 输出: "holle" 示例 2:
输入: "leetcode" 输出: "leotcede"
//思路:双指针,写一个字符类型的交换函数,写一个判断是否元音字母的函数,双指针判断和交换。
class Solution {
public String reverseVowels(String s) {
int p1 = 0;
char[] array = s.toCharArray();
int p2 = array.length - 1;
while((p1 < p2) && (p1 < array.length)){
if(isYuanYin(array[p1]) && isYuanYin(array[p2])){
swap(array, p1++, p2--);
}else if(isYuanYin(array[p1]) && !isYuanYin(array[p2])){
p2--;
}else if(!isYuanYin(array[p1]) && isYuanYin(array[p2])){
p1++;
}else{
p1++;
p2--;
}
}
return new String(array);
}
public void swap(char[] x, int a, int b){
char tmp = x[a];
x[a] = x[b];
x[b] = tmp;
}
public boolean isYuanYin(char ch){
return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u'
||ch=='A'|| ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U';
}
}