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”.
双指针,8ms
class Solution {
public:
string reverseVowels(string s) {
int len = s.size();
if (len == 0) {
return "";
}
int i = 0, j = len - 1;
while (i < j) {
bool temp1=false, temp2=false;
if (s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u'
|| s[i] == 'A' || s[i] == 'E' || s[i] == 'I' || s[i] == 'O' || s[i] == 'U') {
temp1 = true;
}
if (s[j] == 'a' || s[j] == 'e' || s[j] == 'i' || s[j] == 'o' || s[j] == 'u'
||s[j] == 'A' || s[j] == 'E' || s[j] == 'I' || s[j] == 'O' || s[j] == 'U')
{
temp2 = true;
}
if (temp1==true&&temp2==true) {
swap(s[i], s[j]);
++i;
--j;
}
else if (temp1 == true && temp2 != true) {
--j;
}
else{
++i;
}
}
return s;
}
};