【LeetCode】541. 反轉字串 II
阿新 • • 發佈:2018-11-10
題目連結:https://leetcode-cn.com/problems/reverse-string-ii/description/
題目描述
給定一個字串和一個整數 k,你需要對從字串開頭算起的每個 2k 個字元的前k個字元進行反轉。如果剩餘少於 k 個字元,則將剩餘的所有全部反轉。如果有小於 2k 但大於或等於 k 個字元,則反轉前 k 個字元,並將剩餘的字元保持原樣。
示例
輸入: s = “abcdefg”, k = 2
輸出: “bacdfeg”
要求:
該字串只包含小寫的英文字母。
給定字串的長度和 k 在[1, 10000]範圍內。
解決方法
題目較簡單
class Solution {
public:
string reverseStr(string s, int k) {
if (s.size()<=1 || k<=1) return s; //特殊情況
int left=0;
int len=s.size();
while(left<=len-2*k){
reverse(s.begin()+left,s.begin()+left+k);
left+=2*k;
}
int res= s.size()-left;//剩下的字元數
if (res<=k) reverse(s.begin()+left,s.end()); //情況1:剩餘少於 k 個字元
else reverse(s.begin()+left,s.begin()+left+k); //情況2:剩餘小於 2k 但大於或等於 k 個字元
return s;
}
};