编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
示例1:
输入:"hello"
输出:"holle"
示例2:
输入:"leetcode"
输出:"leotcede"
整体思路:
一前一后双指针进行判断
代码题解:
class Solution {
public:
string reverseVowels(string s) {
int n=s.size();
int left=0;
int right=n-1;
char t;
while(left<=right)
{
if(s[left]=='a'||s[left]=='e'||s[left]=='i'||s[left]=='o'||s[left]=='u'
||s[left]=='A'||s[left]=='E'||s[left]=='I'||s[left]=='O'||s[left]=='U')
{
if(s[right]=='a'||s[right]=='e'||s[right]=='i'||s[right]=='o'||s[right]=='u'
||s[right]=='A'||s[right]=='E'||s[right]=='I'||s[right]=='O'||s[right]=='U')
{//如果两边都是元音字母,直接交换即可,交换完left向后走,right向前来
t=s[left];
s[left]=s[right];
s[right]=t;
left++;
right--;
}
else//如果左边是元音但右边不是元音,左边原地等待,右边向前走,直到走到元音字母二者相交换
right--;
}
else//如果第一轮判断的左边不是元音字母,那么左边继续向后走
left++;
}
return s;
}
};
内存消耗过于大了,时间还可以。