题目讲的很难理解,就是2k作为一段,前k个字符进行翻转,如果不足2k又够k也是翻转前k个字符, 不够k个字符的话直接全部翻转。
思路就是题意操作即可,分条件去解决。
class Solution {
public:
string reverseStr(string s, int k) {
for (int i = 0; i < s.size(); i += (2 * k)) {
// 1. 每隔 2k 个字符的前 k 个字符进行反转
// 2. 剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符
if (i + k <= s.size()) {
reverse(s.begin() + i, s.begin() + i + k );
}
// 3. 剩余字符少于 k 个,则将剩余字符全部反转。
if(i + k > s.size()){
reverse(s.begin() + i, s.begin() + s.size());
}
}
return s;
}
};