diff --git a/cs/reverse-vowels-of-a-string.cs b/cs/reverse-vowels-of-a-string.cs new file mode 100644 index 0000000..df85c63 --- /dev/null +++ b/cs/reverse-vowels-of-a-string.cs @@ -0,0 +1,26 @@ +public class Solution { + private bool IsVowel(char c) { + return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'; + } + + public string ReverseVowels(string s) { + var reversed = new StringBuilder(s); + + s = s.ToLower(); + for (int l = 0, r = reversed.Length - 1; l < r; ++l, --r) { + while (l < reversed.Length && !IsVowel(s[l])) { + ++l; + } + + while (r > 0 && !IsVowel(s[r])) { + --r; + } + + if (l < r) { + (reversed[l], reversed[r]) = (reversed[r], reversed[l]); + } + } + + return reversed.ToString(); + } +}