题目

344 反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1)的额外空间解决这一问题。

示例 1:
输入:[“h”,”e”,”l”,”l”,”o”]
输出:[“o”,”l”,”l”,”e”,”h”]

思路

一看到原地修改,优先考虑双指针法。其实本题与数组里的双指针题目一样,仅仅是数组换成了vector,数字换成了char,本质不变。
设置两个指针,一个left从左到右,一个right从右到左,依次交换元素值即可:

  1. class Solution
  2. {
  3. public:
  4. void reverseString(vector<char> &s)
  5. {
  6. int size = s.size();
  7. char tmp;
  8. for (int left = 0, right = size - 1; left < right;left++, right--)
  9. {
  10. tmp = s[left];
  11. s[left] = s[right];
  12. s[right] = tmp;
  13. }
  14. }
  15. };