# 345. Reverse Vowels of a String [easy] (Python)

1012人阅读 评论(0)

## 题目链接

https://leetcode.com/problems/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”.

## 思路方法

### 思路一

class Solution(object):
def reverseVowels(self, s):
"""
:type s: str
:rtype: str
"""
res = list(s)
vowels = []
for i in xrange(len(res)):
if res[i] in ['a', 'o', 'e', 'i', 'u', 'A', 'O', 'E', 'I', 'U']:
vowels.append((i, res[i]))
for j in xrange(len(vowels)/2):
res[vowels[j][0]] = vowels[len(vowels)-j-1][1]
res[vowels[len(vowels)-j-1][0]] = vowels[j][1]
return ''.join(res)

### 思路二

class Solution(object):
def reverseVowels(self, s):
"""
:type s: str
:rtype: str
"""
vowels = re.findall('(?i)[aeiou]', s)
return re.sub('(?i)[aeiou]', lambda m: vowels.pop(), s)

### 思路三

class Solution(object):
def reverseVowels(self, s):
"""
:type s: str
:rtype: str
"""
vowels = {'a': True, 'o': True, 'e': True, 'i': True, 'u': True, 'A': True, 'O': True, 'E': True, 'I': True, 'U': True}
res = list(s)
pos = []
for i in xrange(len(res)):
if res[i] in vowels:
pos.append((i, res[i]))
for j in xrange(len(pos)/2):
res[pos[j][0]] = pos[len(pos)-j-1][1]
res[pos[len(pos)-j-1][0]] = pos[j][1]
return ''.join(res)

PS: 新手刷LeetCode，新手写博客，写错了或者写的不清楚还请帮忙指出，谢谢！

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：92016次
• 积分：1773
• 等级：
• 排名：千里之外
• 原创：90篇
• 转载：0篇
• 译文：0篇
• 评论：15条
博客专栏
 LeetCode解题报告 文章：90篇 阅读：91171
文章分类
最新评论