反转字符串中的元音字母
一、题目描述
反转字符串中的元音字符,元音字母包含"a,e,i,o,u",其中也包含大写。
示例1
输入:s = "hello"
输出:"holle"
示例2
输入:s = "yellow"
输出:"yollew"
二、解题思路
反转元音字母,就是出现的第一个元音字母和最后一个元音字母调换位置,第二个和倒数第二个调换位置,依次类推所以就会想到双指针遍历。
三、解题方法
方法1(双指针)
在数组头有一个指针,数组尾有一个指针,当遇到元音字母时,指针停止移动,左右指针都停止时,也就是都指向元音字母时,交换两个字母即可。
代码实现:
class Solution {
public String reverseVowels(String s) {
int n = s.length();
char[] arr = s.toCharArray();
int left = 0;
int right = n-1;
while(right > left){
while(right>0 && !isVowel(arr[right])){
right--;
}
while(left<n && !isVowel(arr[left])){
left++;
}
if(left < right){
swap(arr,left,right);
left++;
right--;
}
}
return new String(arr);
}
public boolean isVowel(char ch){
return "aeiouAEIOU".indexOf(ch) >= 0;
}
public void swap (char[] arr,int left,int right){
char pre;
pre = arr[left];
arr[left] = arr[right];
arr[right] = pre;
}
}
标签:arr,right,int,字母,元音,串中,left
From: https://www.cnblogs.com/zjjtt/p/16908131.html