Description Link to heading

345.reverse-vowels-of-a-string

Solution Link to heading

We use unordered_set to determine whether it is vowel, two pointers.

Code Link to heading

class Solution {
  public:
    string reverseVowels(string s) {
        unordered_set<char> mset{'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'};
        int l = 0, r = s.size() - 1;
        while (l <= r) {
            if (mset.find(s[l]) != mset.end() && mset.find(s[r]) != mset.end()) {
                char tmp = s[l];
                s[l++] = s[r];
                s[r--] = tmp;
            } else if (mset.find(s[l]) != mset.end() && mset.find(s[r]) == mset.end())
                r--;
            else if (mset.find(s[l]) == mset.end() && mset.find(s[r]) != mset.end())
                l++;
            else {
                r--;
                l++;
            }
        }
        return s;
    }
};