题目链接:点击跳转
思路 1 : 双指针
两个指针分别指向头、尾,每次交换两个指针指向位置的元素。然后左指针右移,右指针左移。
class Solution {
public:
void reverseString(vector<char>& s) {
int n = s.size();
int l = 0, r = n - 1;
while(l < r) {
swap(s[l], s[r]);
++l;
--r;
}
}
};
时间复杂度:O(n)
思路 2 : C++ STL
可以直接利用 reverse 函数实现,这对于一般的 vector、string 都可以使用
class Solution {
public:
void reverseString(vector<char>& s) {
reverse(s.begin(), s.end());
}
};