15 Jun 2024C++ / Python / TypeScriptEasy

Reverse Vowels of a String

Collected C++, Python, TypeScript solutions for reverse vowels of a string. Add a dedicated write-up later if you want deeper notes.

auto-generated entry for Reverse Vowels of a String. the solution files are available below.

solution files

  • C++ reverse-vowels-of-a-string/synced-solution.cpp
  • Python reverse-vowels-of-a-string/synced-solution.py
  • TypeScript reverse-vowels-of-a-string/synced-solution.ts

Solution files

Pythonreverse-vowels-of-a-string/synced-solution.py
def reverseVowels(s):
    vowels = set(class="syntax-string">'aeiouAEIOU')
    s_list = list(s)
    left, right = class="syntax-number">0, len(s_list) - class="syntax-number">1

    while left < right:
        while left < right and s_list[left] not in vowels:
            left += class="syntax-number">1
        while left < right and s_list[right] not in vowels:
            right -= class="syntax-number">1
        s_list[left], s_list[right] = s_list[right], s_list[left]
        left += class="syntax-number">1
        right -= class="syntax-number">1

    return class="syntax-string">''.join(s_list)
C++reverse-vowels-of-a-string/synced-solution.cpp
class Solution {
public:
    string reverseVowels(string s) {
        string vowels = class="syntax-string">"aeiouAEIOU";
        int left = class="syntax-number">0, right = s.size() - class="syntax-number">1;

        while (left < right) {
            while (left < right && vowels.find(s[left]) == string::npos) {
                left++;
            }
            while (left < right && vowels.find(s[right]) == string::npos) {
                right--;
            }
            swap(s[left], s[right]);
            left++;
            right--;
        }

        return s;
    }
};
TypeScriptreverse-vowels-of-a-string/synced-solution.ts
function reverseVowels(s: string): string {
    const vowels = new Set(class="syntax-string">'aeiouAEIOU');
    const arr = s.split(class="syntax-string">'');
    let left = class="syntax-number">0, right = arr.length - class="syntax-number">1;

    while (left < right) {
        while (left < right && !vowels.has(arr[left])) {
            left++;
        }
        while (left < right && !vowels.has(arr[right])) {
            right--;
        }
        [arr[left], arr[right]] = [arr[right], arr[left]];
        left++;
        right--;
    }

    return arr.join(class="syntax-string">'');
}