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".
思路:主要是懂得元音是什么,a,e,i,o,u字母,然后就是swap的一个过程,双指针,从前往后,从后往前,分别扫,扫到然后互换即可。
class Solution {
public String reverseVowels(String s) {
HashSet<Character> set = new HashSet<Character>();
set.add('a'); set.add('A');
set.add('e'); set.add('E');
set.add('i'); set.add('I');
set.add('o'); set.add('O');
set.add('u'); set.add('U');
char[] ss = s.toCharArray();
int i = 0; int j = s.length() - 1;
while(i < j) {
while(i < j && !set.contains(ss[i])) {
i++;
}
while(i < j && !set.contains(ss[j])) {
j--;
}
if(i < j) {
char temp = ss[i];
ss[i] = ss[j];
ss[j] = temp;
i++;
j--;
}
}
return new String(ss);
}
}