Skip to content

Commit 53d7fbc

Browse files
committed
add reverse vowels
1 parent a3d775b commit 53d7fbc

File tree

3 files changed

+31
-0
lines changed

3 files changed

+31
-0
lines changed

array_string/reverse_vowels_of_a_string/__init__.py

Whitespace-only changes.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution:
2+
def reverseVowels(self, s: str) -> str:
3+
vowels = ('a', 'e', 'i', 'o', 'u')
4+
5+
result = list(s)
6+
7+
left_pointer = 0
8+
right_pointer = len(s) - 1
9+
10+
while left_pointer < right_pointer:
11+
while left_pointer < right_pointer and result[left_pointer].lower() not in vowels:
12+
left_pointer += 1
13+
while left_pointer < right_pointer and result[right_pointer].lower() not in vowels:
14+
right_pointer -= 1
15+
16+
result[left_pointer], result[right_pointer] = result[right_pointer], result[left_pointer]
17+
left_pointer += 1
18+
right_pointer -= 1
19+
20+
return ''.join(result)

tests/test_reverse_vowels.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import pytest
2+
from array_string.reverse_vowels_of_a_string.solution import Solution
3+
4+
5+
@pytest.mark.parametrize(
6+
"s, expected",
7+
[("IceCreAm", "AceCreIm"), ("leetcode", "leotcede"), (" ", " ")],
8+
)
9+
def test_reverse_vowels(s, expected):
10+
solution = Solution()
11+
assert solution.reverseVowels(s) == expected

0 commit comments

Comments
 (0)