Leetcode 345.反转字符串中的元音字母【C++】
本文最后更新于:2022年3月23日 晚上
地址:https://leetcode-cn.com/problems/reverse-vowels-of-a-string/
题目
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
示例 1:
输入: "hello"
输出: "holle"
示例 2:
输入: "leetcode"
输出: "leotcede"
说明:
元音字母不包含字母”y”。
解题思路
26个英文字母中,21个是辅音字母,5个是元音字母。5个元音字母分别是:a、e、i、o、u。
双指针。分别指向字符串的首尾元素,前指针从前往后查找元音字母,后指针从后往前查找元音字母。
两层循环,第一层即从前往后找元音字母,找到一个元音字母就进入二层循环,从后往前查找元音字母,找到后互换前后两个元音字母,j--
并跳出二层循环,继续遍历一层循环,直到 i
不再小于 j
即找完了字符串的所有元音字母。
代码
class Solution {
public:
string reverseVowels(string s) {
int i = 0;
int j = s.length() - 1;
while (i < j)
{
if (isVowel(s[i])) {
while (j > i) {
if (isVowel(s[j])) {
char temp = s[i];
s[i] = s[j];
s[j] = temp;
j--;
break;
}
j--;
}
}
i++;
}
return s;
}
bool isVowel(char c) {
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'||
c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U')
return true;
return false;
}
};
Leetcode 345.反转字符串中的元音字母【C++】
https://mxy493.xyz/2020030641619/