【题目】
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
示例 1:
输入: "hello"
输出: "holle"
示例 2:
输入: "leetcode"
输出: "leotcede"
说明: 元音字母不包含字母"y"。
【思路】
从左右两边分别找到元音字母,进行交换即可。
注意:python不能直接修改字符串。
【代码】
python版本
class Solution(object):
def reverseVowels(self, s):
"""
:type s: str
:rtype: str
"""
left, right = , len(s)-1
res1 = ''
res2 = ''
vs = set('aeiouAEIOU')
while left <= right:
# 找到左边、右边的元音字母,相互交换
while left < right:
if s[left] not in vs:
res1 += s[left]
left +=
else:
break
while left < right:
if s[right] not in vs:
res2 = s[right] + res2
right -=
else:
break
if left <= right:
res1 += s[right]
if left != right:
res2 = s[left] + res2
left +=
right -=
return res1 + res2
C++版本
class Solution {
public:
string reverseVowels(string s) {
set<char> vs {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'};
int left=, right=s.size()-1;
while(left <= right){
//找到左右两边元音字母
while(left < right){
if(vs.find(s[left]) == vs.end()){
left++;
}else{
break;
}
}
while(left < right){
if(vs.find(s[right]) == vs.end()){
right--;
}else{
break;
}
}
if(left < right){
char c = s[left];
s[left] = s[right];
s[right] = c;
}
left++;
right--;
}
return s;
}
};