leetcode[344]Reverse String

问题:in-place翻转字符串(要求:不能开辟新的空间)

输入:char[] 字符数组

思路:利用two pointers,交换两者字符。

class Solution {
public:
    void reverseString(vector<char>& s) {
        int i;
        int j;
        char c;
        for(i=0;i<int((s.size()+1)/2);i++)        //+1可处理奇数偶数长度
        {
            j = s.size()-1-i;
            c = s[i];
            s[i] = s[j];
            s[j] = c;
            
        }
    }
};

隔壁大神启发了我,不用计算s的一半长度,只需考虑i<j时即可。

class Solution {
public:
    string reverseString(string s) {
        int i = 0, j = s.size() - 1;
        while(i < j){
            swap(s[i++], s[j--]); 
        }
        return s;
    }
};
发布了56 篇原创文章 · 获赞 10 · 访问量 6823

猜你喜欢

转载自blog.csdn.net/qq_22148493/article/details/88263042
今日推荐