思路:很明显就是以2k为一组,那就以2k一组来循环。在循环里,先处理2k的前k个字符的反转,如果后一段大于k小于2k,也就是i+k<=字符串长度时(因为后一段如果小于k的话,i+k就会大于字符串长度),那就反转前一段。则两个处理都是一样的。然后继续循环,如果是括号里的情况,就把i开始到最后都反转。
题解c++:
class Solution {
public:
string reverseStr(string s, int k) {
for(int i=0;i<s.size();i+=2*k)
{
if(i+k<=s.size())
{
reverse(s.begin()+i,s.begin()+i+k);
continue;
}
reverse(s.begin()+i,s.begin()+s.size());
}
return s;
}
};