欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LeetCode 541 : 反转字符串

程序员文章站 2022-06-11 10:34:52
...

LeetCode 541 : 反转字符串

class Solution {
public:
    string reverseStr(string s, int k) {
        int len = s.size();
        //字符少于k个, 全部翻转
        if(k > len) {
            reverse(s.begin(), s.end());
            return s;
        }

        int i = 0;
        //循环遍历, 2k个字符为一组, 把每一组的前k个字符翻转, 直到最后一组字符小于2k, 后续处理
        while(i < len) {
            string::iterator begin = s.begin() + i;
            if(i + k * 2 < len) {
                //这一组有2k个字符
                reverse(begin, begin + k);
            }
            else {
                //i + 2k > len 说明最后一组字符少于2k个, 另做处理
                break;
            }
            //更新i
            i += 2 * k;
        }

        //处理最后一组字符
        string::iterator begin = s.begin() + i;
        if(i + k < len) {
            //最后一组字符少于2k个但大于k个, 翻转前k个
            reverse(begin, begin + k);
        }
        else {
            //最后一组字符少于k个, 剩下的全部翻转
            reverse(begin, s.end());
        }
        return s;
    }

};




相关标签: OJ题目