1. 程式人生 > >【LeetCode】541. 反轉字串 II

【LeetCode】541. 反轉字串 II

題目連結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; } };