Reverse Vowels of a String

本文介绍了一种使用C++与Python实现的反转字符串中元音字母的方法。通过双指针技术,该算法有效地交换了字符串两端的元音字母位置,实现了对元音字母的反转操作。

c++

class Solution {
public:
    string reverseVowels(string s) {
        if (s.empty() || s.size()==1)
            return s;

        string::iterator biter = s.begin();
        string::iterator eiter = s.end()-1;
        while (biter<eiter){
            while (dict.find(*biter) == dict.end() && biter<eiter)
                biter++;
            while (dict.find(*eiter) == dict.end() && biter<eiter)
                eiter--;
            char tmp = *biter;
            *biter = *eiter;
            *eiter = tmp;
            biter++;
            eiter--;
        }

        return s;
    }
private:
    set<char> dict{ 'a','e','i','o','u', 'A', 'E','I','O','U'};
};

python

class Solution(object):
    def reverseVowels(self, s):
        """
        :type s: str
        :rtype: str
        """
        if len(s)<2:
            return s

        siter, eiter = 0, len(s)-1

        s = list(s)
        vol = set(list('aeiouAEIOU'))
        while siter < eiter:
            if s[siter] in vol and s[eiter] in vol:
                s[siter], s[eiter] = s[eiter], s[siter]
                siter += 1
                eiter -= 1

            if s[siter] not in vol:
                siter += 1

            if s[eiter] not in vol:
                eiter -= 1

        return ''.join(s)

https://leetcode.com/discuss/98983/python-2-pointers-solution

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值