解题思路:
只能说题目的意思过于含糊不清,其实很简单,就是每隔k个数,翻转k个数,最后不够k长度的反转。那么最直接的操作就是在原序列上操作,遍历时,每2k个数作为一个隔间,前k个翻转,不够k个直接翻转,代码如下:
class Solution {
public:
string reverseStr(string s, int k) {
int len = s.length();
for(int i = 0; i < len; i += 2 * k) {
// 没到最后
if(i + k < len) {
reverse(s.begin() + i, s.begin() + i + k);
} else {
// 最后不足k
reverse(s.begin() + i, s.end());
}
}
return s;
}
};