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".
Solution:
public class Solution { public String reverseVowels(String s) { if (s.length()<=1) return s; HashSet<Character> vowels = new HashSet<Character>(); vowels.add('a'); vowels.add('e'); vowels.add('i'); vowels.add('o'); vowels.add('u'); vowels.add('A'); vowels.add('E'); vowels.add('I'); vowels.add('O'); vowels.add('U'); char[] sArr = s.toCharArray(); int p1 = 0, p2=s.length()-1; while (p1<p2){ while (p1<p2 && !vowels.contains(sArr[p1])) p1++; while (p1<p2 && !vowels.contains(sArr[p2])) p2--; char temp = sArr[p1]; sArr[p1++] = sArr[p2]; sArr[p2--] = temp; } return new String(sArr); } }