541 Reverse String II 反转字符串 II

给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。
示例:
输入: s = "abcdefg", k = 2
输出: "bacdfeg"
要求:
    1.该字符串只包含小写的英文字母。
    2.给定字符串的长度和 k 在[1, 10000]范围内。
详见:https://leetcode.com/problems/reverse-string-ii/description/

C++:

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

 参考:http://www.cnblogs.com/grandyang/p/6583004.html

猜你喜欢

转载自www.cnblogs.com/xidian2014/p/8910532.html
今日推荐