leetcode反转字符串中的元音字母

编写一个函数,以字符串作为输入,反转该字符串中的元音字母。

示例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;
    } 
};

内存消耗过于大了,时间还可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值