Description
Given a string s
, reverse only all the vowels in the string and return it.
The vowels are 'a'
, 'e'
, 'i'
, 'o'
, and 'u'
, and they can appear in both lower and upper cases, more than once.
Example 1:
Input: s = "IceCreAm"
Output: "AceCreIm"
Explanation:
The vowels in s
are ['I', 'e', 'e', 'A']
. On reversing the vowels, s becomes "AceCreIm"
.
Example 2:
Input: s = "leetcode"
Output: "leotcede"
Constraints:
1 <= s.length <= 3 * 105
s
consist of printable ASCII characters.
Solution
Python3
class Solution:
def reverseVowels(self, s: str) -> str:
N = len(s)
s = list(s)
i, j = 0, N - 1
while i < j:
while i < j and s[i] not in "aeiouAEIOU":
i += 1
while i < j and s[j] not in "aeiouAEIOU":
j -= 1
s[i], s[j] = s[j], s[i]
i += 1
j -= 1
return "".join(s)