给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
示例:
输入: s = “abcdefg”, k = 2
输出: “bacdfeg”
对字符串末尾的位置和当前位置+k-1取最小值
class Solution {
public:
string reverseStr(string s, int k) {
for(int start = 0;start < s.length();start+=2*k){
int i = start;
int j = min(s.length()-1,start+k-1);
while(i<j){
swap(s[i],s[j]);
i++;j--;
}
}
return s;
}
int min(int i,int j){
if(i<j)
return i;
else
return j;
}
};