Write a function that takes a string as input and reverse only the vowels of a string.
Example 1:
Given s = "hello", return "holle".
Example 2:
Given s = "leetcode", return "leotcede".
Note:
The vowels does not include the letter "y".
一刷
题解:
与344类似,不过这回只有元音字母需要交换位置,方法相同,two pointer
public class Solution {
public String reverseVowels(String s) {
char[] vowals = "aeiouAEIOU".toCharArray();
char[] ss = s.toCharArray();
Set<Character> dict = new HashSet<Character>();
for(char a : vowals){
dict.add(a);
}
int l = 0, r = s.length()-1;
while(l<r){
while(!dict.contains(ss[l]) && l<r) l++;
while(!dict.contains(ss[r]) && l<r) r--;
if(l<r){
char temp = ss[l];
ss[l] = ss[r];
ss[r] = temp;
l++;
r--;
}
}
return new String(ss);
}
}
二刷
思路同上