题目描述
分析
和leetcode 344逻辑差不多,主要就多了一些判断条件
代码实现
class Solution {
public:
string reverseStr(string s, int k) {
int num = s.size() / k; // 计算有多少个k
char c;
int left;
int right;
for(int i=0; i<=num; i+=2) // 按照每两个k进行遍历
{
left = i*k;
// 判断是否够前k个 进行反转
if((i+2)*k <= s.size() || ((i+2)*k > s.size() && (i+1)*k <= s.size()))
{
right = (i+1)*k - 1;
}else {
// 不够k个即说明最后了
right = s.size() - 1;
}
// 这个转换逻辑与344题的一样
while(left <= right)
{
c = s[left];
s[left] = s[right];
s[right] = c;
left++;
right--;
}
}
return s;
}
};