一、题目
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
示例 1:
输入: "hello" 输出: "holle"
示例 2:
输入: "leetcode" 输出: "leotcede"
说明:
元音字母不包含字母"y"。
二、题解思路
- 题解思路:双指针,即同时开始(正方向、反方向),正方向遍历,反方向遍历,碰到元音则交换位置,否则继续往下查找。
三、代码实现
-
C++代码实现
class Solution {
public:
string reverseVowels(string s)
{
vector<char> nums = {'a','e','i','o','u','A','E','I','O','U'};
int i = 0,j = s.size()-1;
while(i<j)
{
while(!(find(nums.begin(),nums.end(),s[i])!=nums.end()) && i<j) //正方向不是元音,继续查找
i++;
while(!(find(nums.begin(),nums.end(),s[j])!=nums.end()) && i<j) //反方向不是元音,继续查找
j--;
char temp = s[i];
s[i++] = s[j];
s[j--] = temp;
}
return s;
}
};