[LeetCode]Reverse Vowels of a String

题目描述:

LeetCode 345. Reverse Vowels of a String

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".

题目大意:

编写函数输入一个字符串,将其中的元音字母逆置。

测试用例如题目描述。

解题思路:

双指针法(Two Pointers)

Python代码:

class Solution(object):
    def reverseVowels(self, s):
        """
        :type s: str
        :rtype: str
        """
        VOWELS = ('a', 'e', 'i', 'o', 'u')
        size = len(s)
        left, right = 0, size - 1
        ls = list(s)
        while True:
            while left < size and s[left].lower() not in VOWELS:
                left += 1
            while right >= 0 and s[right].lower() not in VOWELS:
                right -= 1
            if left >= right: break
            ls[left], ls[right] = ls[right], ls[left]
            left, right = left + 1, right - 1
        return ''.join(ls)

精简版Python代码,详见LeetCode Discuss:https://leetcode.com/discuss/99073/1-2-lines-python-ruby

def reverseVowels(self, s):
    vowels = re.findall('(?i)[aeiou]', s)
    return re.sub('(?i)[aeiou]', lambda m: vowels.pop(), s)

 

本文链接:http://bookshadow.com/weblog/2016/04/23/leetcode-reverse-vowels-string/
请尊重作者的劳动成果,转载请注明出处!书影博客保留对文章的所有权利。

如果您喜欢这篇博文,欢迎您捐赠书影博客: ,查看支付宝二维码

Pingbacks已关闭。

评论
  1. xueluobingyuan xueluobingyuan 发布于 2016年6月7日 00:43 #

    正则没有看明白...
    (?i)是什么意思,让后面的枚举忽略大小写吗

  2. 在线疯狂 在线疯狂 发布于 2016年6月8日 20:45 #

    是的,意思是大小写不敏感:case-insensitive

张贴您的评论