题目
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
示例 1:
输入: "hello" 输出: "holle"
示例 2:
输入: "leetcode" 输出: "leotcede"
说明:
元音字母不包含字母"y"。
解题思路
设定一个左指针i,一个右指针j,当i<j时,如果s[i]和s[j]同时为元音字母,则交换,并且交换之后i++,j--;如果s[i]不是元音字母,则i++;如果s[j]不是元音字母,则j--;
代码
class Solution { public: string reverseVowels(string s) { int i=0; int j=s.size()-1; while(i<j){ if(isVowel(s[i]) && isVowel(s[j])){ swap(s[i++],s[j--]); }else if(!isVowel(s[i])){ i++; }else{ j--; } } return s; } bool isVowel(char c){ return c=='a'||c=='e'||c=='i'||c=='o'||c=='u'||c=='A'||c=='E'||c=='I'||c=='O'||c=='U'; } };
注意事项
每次找到两个元音字母,交换之后,一定记得把左指针加一,右指针减一,否则会进入无限循环。