leetcode345

easy,345
*Write a function that takes a string as input and reverse only the vowels of a string.
Example 1:
Given s = “hello”, return “holle”.
Example 2:
Given s = “leetcode”, return “leotcede”.*
自己是这样写的:

class Solution(object):
    def reverseVowels(self, s):
        """
        :type s: str
        :rtype: str
        """
        blist=[]
        for str in s:
            if str in ['a','e','i','o','u','A','E','I','O','U']:
                blist.append(str)
        blist.reverse()
        num=0
        alist=list(s)
        for j in range(len(alist)):
            if alist[j] in ['a','e','i','o','u','A','E','I','O','U']:
                alist[j]=blist[num]
                num=num+1
        news=''.join(alist)
        return news

在Discuss上看到一个想法很好的:

class Solution(object):
    def reverseVowels(self, s):
        """
        :type s: str
        :rtype: str
        """
        vovels=[]
        index=[]
        l=list(s)
        for i in range(len(l)):
                if l[i] in 'aeiouAEIOU':
                    index.append(i)
                    vovels.append(l[i])
        for i in index:
            l[i] = vovels.pop()
        return ''.join(l)
 *这种方法巧妙在:将元音的索引保存在一个数组中,这样就不用像我的方法一样,当要换元素时还要再遍历一遍,还有比较巧妙的事pop()正好是从最后一位开始的 这样就实现的逆序。*          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值