Skip to content

345. Reverse Vowels of a String

Uses two pointers

function reverseVowels(s: string): string {
let output = s;
const vowels = ["a", "e", "i", "o", "u", "A", "E", "I", "O", "U"];
let retrievedVowelsHashMap: Record<string, string> = {};
for (let charIndex = 0; charIndex < s.length; charIndex++) {
if (vowels.includes(s[charIndex])) {
retrievedVowelsHashMap[charIndex] = s[charIndex];
}
}
const keys = Object.keys(retrievedVowelsHashMap);
const values = Object.values(retrievedVowelsHashMap).reverse();
for (let vowelIndex = 0; vowelIndex < keys.length; vowelIndex++) {
output =
output.substring(0, Number(keys[vowelIndex])) +
values[Number(vowelIndex)] +
output.substring(Number(keys[vowelIndex]) + 1);
}
return output;
}
console.log(reverseVowels("IceCreAm"));
console.log(reverseVowels("leetcode"));