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".
Companies:
Google
Related Topics:
Two Pointers, String
Similar Questions:
// OJ: https://leetcode.com/problems/reverse-vowels-of-a-string/
// Author: github.com/lzl124631x
// Time: O(N)
// Space: O(1)
class Solution {
private:
bool isVowel(char c) {
c = tolower(c);
return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';
}
public:
string reverseVowels(string s) {
int i = 0, j = s.size() - 1;
while (i < j) {
while (i < j && !isVowel(s[i])) ++i;
while (i < j && !isVowel(s[j])) --j;
if (i < j) swap(s[i++], s[j--]);
}
return s;
}
};