leetcode题目:
解题思路:
1. 先将字符串s转为列表,(字符串不可变)引入两个下标i和j,
i初始化为0,j初始化为s的长度-1,。
2. 当i<j时
2.1 s[i]不是元音字母时,i+=1。
2.2 s[j]不是元音字母时,j-=1。
2.3 s[i]和s[j]都是元音字母时,交换s[i]和s[j],并且i+=1,j-=1。
3. 上述操作完成后,将列表转为字符串,返回。
代码:
class Solution: def reverseVowels(self, s): """ :type s: str :rtype: str """ vowels = ['a', 'o', 'e', 'i', 'u', 'A', 'O', 'E', 'I', 'U'] s=list(s) i=0 j=len(s)-1 while i<j: while i<j and s[i] not in vowels: i+=1 while i<j and s[j] not in vowels: j-=1 s[i],s[j]=s[j],s[i] i+=1 j-=1 s=''.join(s) return s
结果: