题目描述:
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
思路:从前往后找到一个元音字母,再从后往前找到一个元音字母,然后把他们对换;持续这个操作,直到前后两个方向遍历到同一个位置。由于每个元素都访问一次,复杂度应该是O(n)。
inline bool isVowel(char c)
{
if(c=='a'||c=='A'||c=='e'||c=='E'||c=='i'
||c=='I'||c=='o'||c=='O'||c=='u'||c=='U')
return true;
return false;
}
string reverseVowels(string s) {
int i=0,j=s.size();
while(i<j)
{
//分别从前面和后面找到一个元音字母
while(i<j && !isVowel(s[i])) i++;
while(j>i && !isVowel(s[j])) j--;
//对调
if(i<j)
swap(s[i++],s[j--]);
}
return s;
}