问题描述
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
示例 1:
输入: "hello"
输出: "holle"
示例 2:
输入: "leetcode"
输出: "leotcede"
说明:
元音字母不包含字母"y"。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-vowels-of-a-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
执行结果
代码描述
思路:首先得知道元音字母有哪些,大小写都有。然后把元音字母放入set中,扫描s的过程中,记录下元音字母的位置,保存在vector中,最后再扫描vector中保存的s中元音的位置,两两交换,即可。
class Solution {
public:
string reverseVowels(string s) {
set<char> key;
key.insert('a');
key.insert('e');
key.insert('i');
key.insert('o');
key.insert('u');
key.insert('A');
key.insert('E');
key.insert('I');
key.insert('O');
key.insert('U');
vector<int> index;
for(int i = 0; i < s.size(); ++i)
{
if(key.count(s[i]) == 1)
{
index.push_back(i);
}
}
for(int i = 0, j = index.size()-1; i < j; ++i, --j)
{
swap(s[index[i]], s[index[j]]);
}
return s;
}
};