Every day a leetcode
题目来源:345. 反转字符串中的元音字母
解法1:遍历+双指针
遍历一次字符串,用数组记录所有元音字母的下标。
遍历数组,使用双指针从头和尾遍历,交换字符串的元素。
代码:
/*
* @lc app=leetcode.cn id=345 lang=cpp
*
* [345] 反转字符串中的元音字母
*/
// @lc code=start
class Solution
{
public:
string reverseVowels(string s)
{
vector<int> index;
int n = s.size();
for (int i = 0; i < n; i++)
if (s[i] == 'a' || s[i] == 'A' || s[i] == 'e' || s[i] == 'E' || s[i] == 'i' || s[i] == 'I' || s[i] == 'o' || s[i] == 'O' || s[i] == 'u' || s[i] == 'U')
index.push_back(i);
n = index.size();
int i = 0;
int j = n - 1;
while (i < j)
{
char temp = s[index[i]];
s[index[i]] = s[index[j]];
s[index[j]] = temp;
i++;
j--;
}
return s;
}
};
// @lc code=end
结果:
复杂度分析:
时间复杂度:O(n),其中n是字符串s的长度。
空间复杂度:O(n),其中n是字符串s的长度。