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();
    }
}