345. Reverse Vowels of a String
Tags
- Two Pointers
- String
Link
Question
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 * 10
5s
consist of printable ASCII characters.
Answer
JavaScript
/**
* @param {string} s
* @return {string}
*/
var reverseVowels = function (s) {
const vows = s.match(/[aeiou]/gi);
return s.replace(/[aeiou]/gi, () => vows.pop());
};
/**
* @param {string} s
* @return {string}
*/
var reverseVowels = function (s) {
var vowels = "aeiouAEIOU";
s = s.split("");
var i = 0;
var j = s.length - 1;
while (i < j) {
if (!vowels.includes(s[i])) {
i++;
} else if (!vowels.includes(s[j])) {
j--;
} else {
[s[i], s[j]] = [s[j], s[i]];
i++;
j--;
}
}
return s.join("");
};