1.題目
給定一個字符串 s 和一個整數 k,你需要對從字符串開頭算起的每隔 2k 個字符的前 k 個字符進行反轉。
如果剩餘字符少於 k 個,則將剩餘字符全部反轉。
如果剩餘字符小於 2k 但大於或等於 k 個,則反轉前 k 個字符,其餘字符保持原樣。
示例:
輸入: s = “abcdefg”, k = 2
輸出: “bacdfeg”
提示:
該字符串只包含小寫英文字母。
給定字符串的長度和 k 在 [1, 10000] 範圍內。
2.代碼展示
class Solution {
public:
string reverseStr(string s, int k) {
auto it = s.begin();
while (it < s.end()){
if (s.end()-it<k){
reverse(it,s.end());
}
else{
reverse(it,it+k);
}
it = it+2*k;
}
return s;
}
};
3.解題思路
通過迭代器遍歷,當剩餘字符長度小於K時,全部轉置,其餘情況直接轉置當前位置到K位。
即便小於2k,我們迭代器增加2k,最後也符合終止條件了。