leetcode345reverse_vowels_of_a_string

还是一道简单的string类型的题目

image-20181210215043070

思路很自然想到了,双指针,然后一个从前往后一个从后往前,遇到都是元音的时候就交换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class (object):
def reverseVowels(self, s):
"""
:type s: str
:rtype: str
"""
ns = list(s)
vowels = ['a','e','i','o','u','A','E','I','O','U']
front = 0
later = len(ns)-1
while(front<later):
if(ns[front] not in vowels):
front+=1
if(ns[later] not in vowels):
later-=1
if(ns[later] in vowels and ns[front] in vowels):
ns[later],ns[front] = ns[front],ns[later]
later-=1
front+=1
return "".join(ns)

一种快一点的解法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class (object):
def reverseVowels(self, s):
"""
:type s: str
:rtype: str
"""
ns = list(s)
vowels = ['a','e','i','o','u','A','E','I','O','U']
front = 0
later = len(ns)-1
while(front<later):
while(ns[front] not in vowels and front < later):
front+=1
while(ns[later] not in vowels and front < later):
later-=1
if later <= front:
break
ns[front],ns[later] = ns[later],ns[front]
front+=1
later-=1

参考资料