## Similar Problems

Similar Problems not available

# Reverse Vowels Of A String

## Companies:

Difficulty: Unknown

Topics:

Problem Statement:

Write a function that takes a string as input and reverse only the vowels of a string.

Example 1:

Input: "hello" Output: "holle"

Example 2:

Input: "leetcode" Output: "leotcede"

Note:

• The vowels does not include the letter "y".

Solution:

The problem can be solved by keeping two pointers, one at the start of the string and one at the end. We'll then swap the vowels at the two positions and move the pointers towards the middle until they meet.

We'll have to check if a character is a vowel or not. We can do this by creating a set of all the vowels and then checking if a character is in the set or not.

Once we swap the vowels at the two positions, we'll continue the process until the two pointers meet at the middle.

Code:

``````class Solution:
def reverseVowels(self, s: str) -> str:
vowels = set(['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'])
s = list(s)
l, r = 0, len(s) - 1

while l < r:
if s[l] in vowels and s[r] in vowels:         # Check whether the element is vowel or not
s[l], s[r] = s[r], s[l]                  # Swap the vowels
l += 1
r -= 1
elif s[l] not in vowels:
l += 1                                   # Move the left pointer if the character in s[l] is not a vowel
elif s[r] not in vowels:
r -= 1                                   # Move the right pointer if the character in s[r] is not a vowel

return ''.join(s)                                # Return the updated string
``````

Testing:

We'll test our function with some inputs:

``````s = Solution()
assert s.reverseVowels("hello") == "holle"
assert s.reverseVowels("leetcode") == "leotcede"
assert s.reverseVowels("aeiou") == "uoiea"
assert s.reverseVowels("bcdfg") == "bcdfg"
assert s.reverseVowels("AaEeIiOoUu") == "UuOoIiEeAa"
print("All test cases passed")
``````

Output:

``````All test cases passed
``````

## Solution Implementation

``1``