541. 反转字符串 II

541. 反转字符串 II

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
 
示例 1:
输入:s = "abcdefg", k = 2
输出:"bacdfeg"

示例 2:
输入:s = "abcd", k = 2
输出:"bacd"
 
提示:
1 <= s.length <= 104
s 仅由小写英文组成
1 <= k <= 104
//时间复杂度O(n) 空间复杂度O(1)
void reverseString(string& s, int k) {
    for(int i=0; i<s.size(); i=i+2*k){
        if(i+k<=s.size()){
            for(int l=i, j=i+k-1; l<j; l++,j--){
                int temp = s[l];
                s[l]=s[j];
                s[j]=temp;
            }
        }
        else{
            for(int l=i, j=s.size()-1; l<j; l++,j--){
                int temp = s[l];
                s[l]=s[j];
                s[j]=temp;
            }
        }
    }
}

你可能感兴趣的:(C/C++语言,算法,leetcode,c++)