这题是典型的双指针问题,前后各一个指针用来检测是否是元音,都是的话互相交换来解决。
class Solution(object):
def reverseVowels(self, s):
"""
:type s: str
:rtype: str
"""
if len(s) < 2:
return s
i = 0
j = len(s) - 1
vowels = ['a', 'e', 'i', 'o', 'u']
s1 = list(s)
s = s.lower()
while i < j:
if s[i] not in vowels:
i = i + 1
if s[j] not in vowels:
j = j - 1
if i < j and s[i] in vowels and s[j] in vowels:
s1[i], s1[j] = s1[j], s1[i]
i = i + 1
j = j - 1
return ''.join(s1)
理论上leetcode的344. Reverse String也是同样的道理。不过我还是更喜欢return s[::-1]一句话来搞定。