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".
1 public class Solution { 2 public string ReverseVowels(string s) { 3 if (s == null || s.Length < 2) return s; 4 5 var vowels = new HashSet<char>(); 6 vowels.Add('a'); 7 vowels.Add('e'); 8 vowels.Add('i'); 9 vowels.Add('o'); 10 vowels.Add('u'); 11 vowels.Add('A'); 12 vowels.Add('E'); 13 vowels.Add('I'); 14 vowels.Add('O'); 15 vowels.Add('U'); 16 17 var arr = s.ToCharArray(); 18 19 int i = 0, j = s.Length - 1; 20 21 while (i < j) 22 { 23 while (i < j && !vowels.Contains(arr[i])) 24 { 25 i++; 26 } 27 28 while (i < j && !vowels.Contains(arr[j])) 29 { 30 j--; 31 } 32 33 if (i < j) 34 { 35 var tmp = arr[i]; 36 arr[i] = arr[j]; 37 arr[j] = tmp; 38 } 39 40 i++; 41 j--; 42 } 43 44 var sb = new StringBuilder(); 45 foreach (char c in arr) 46 { 47 sb.Append(c); 48 } 49 50 return sb.ToString(); 51 } 52 }