String:541. Reverse String II

来源:互联网 发布:算法分析专业 编辑:程序博客网 时间:2024/04/30 13:20

    提交了好几遍才过的。思路就是设一个下标cur,是每个2k的开始位置,根据cur判断cur位置后面够不够2k,如果不够k,翻转剩下的所有;如果够k但不够2k,翻转前k个。

class Solution {public:    string reverseStr(string s, int k) {        int cur = 0;        while(1)        {            if(s.size() - cur < k)            {                reverse(s.begin() + cur, s.end());                cout << s << endl;                break;            }            if(s.size() - cur >= k && s.size() - cur <= 2 * k)            {                reverse(s.begin() + cur, s.begin() + cur + k);                break;            }            reverse(s.begin() + cur, s.begin() + cur + k);            cur = cur + 2 * k;        }        return s;    }};
    同样的思路,看别人的代码:

class Solution {public:    string reverseStr(string s, int k) {        for (int i = 0; i < s.size(); i += 2*k)             reverse(s.begin()+i, min(s.begin()+i+k, s.end()));        return s;    }};


原创粉丝点击