LeetCode 334.字符串原地逆置,需要TMP吗?我看未必!

问题很简单,如下:

LeetCode 334.字符串原地逆置,需要TMP吗?我看未必!_第1张图片

 双指针可以解决,but,swap需要引入临时变量吗?一般来讲,可以。但也未必!如下:

class Solution {
public:
    void reverseString(vector& s) {
        int left = 0;
        int right = s.size()-1;
        while(left < right)
        {
            s[left] = s[left]^s[right];
            s[right] = s[right]^s[left];
            s[left] = s[left]^s[right];
            left ++;
            right --;
        }
    }
};

采用c++提供的异或操作可以跳过临时变量,减少一定的存储空间消耗。char底层也是整型,因此可以这样使用。以下是两种方法的内存占用对比。

LeetCode 334.字符串原地逆置,需要TMP吗?我看未必!_第2张图片

LeetCode 334.字符串原地逆置,需要TMP吗?我看未必!_第3张图片

 

 

你可能感兴趣的:(DS,&,Algo,leetcode,算法,职场和发展)