345.Reverse Vowels of a String

345.Reverse Vowels of a String

难度:Easy

编写一个函数,以字符串作为输入,反转该字符串中的元音字母。

示例 1:
输入: "hello"
输出: "holle"
示例 2:
输入: "leetcode"
输出: "leotcede"
说明:
元音字母不包含字母"y"。

先用一个数组保存元音字符的下标号,然后遇到元音字符的时候,反转即可。

class Solution {
set<char> vowels={'a','e','i','o','u','A','E','I','O','U'};
public:
string reverseVowels(string s) {
string res;
// cout<<s.length()<<endl;
if(!s.length()) return res;
vector<int>indexs;
for(int i=0;i<s.length();i++)
{
if(vowels.count(s[i])) indexs.push_back(i);
}
if(indexs.empty()) return s;
// for(auto c:indexs)
// cout<<c<<" ";
int start=0;
for(int i=0;i<s.length();i++)
{
if(start <indexs.size() &&i==indexs[start] )
{
res+=s[indexs[indexs.size()-1-start]];
++start;
// cout<<res<<endl;
}
else
{
res+=s[i];
// cout<<res<<" - "<<endl;
}
}
return res;
}
};

执行用时 :20ms, 在所有 C++ 提交中击败了54.85%的用户 内存消耗 :11.4MB, 在所有 C++ 提交中击败了5.12%的用户