LeetCode541 反轉字串 II

2022-06-08 20:15:06 字數 693 閱讀 9847

給定乙個字串 s 和乙個整數 k,你需要對從字串開頭算起的每隔 2k 個字元的前 k 個字元進行反轉。

如果剩餘字元少於 k 個,則將剩餘字元全部反轉。

如果剩餘字元小於 2k 但大於或等於 k 個,則反轉前 k 個字元,其餘字元保持原樣。

一、自己寫的,有些冗長

1

class

solution

8else

17}18

}19return

s;20

}21 };

就是簡單模擬而已,自己寫的很爛!自己的想法時,用外層迴圈控制有多少個2k需要reverse,內部迴圈來做reverse,反轉的區間用 i,j 每次更新規律來控制。外部迴圈是向上取整,這裡用到了乙個數論的小結論:

n/m 向上取整:  = (n - 1) / m + 1

思考怎樣進一步優化迴圈,將雙迴圈去掉?

二、抓住剩餘,題目化簡為了

1.每隔k個反轉k個
2.剩餘不足k個全部反轉
1

class

solution 9//

2.剩餘不足k個全部反轉

10else 13

}14return

s;15

}16 };

注意第六行是 s.size() 而不是s.size() -1

leetcode 541 反轉字串 II

題目描述 給定乙個字串和乙個整數 k,你需要對從字串開頭算起的每個 2k 個字元的前k個字元進行反轉。如果剩餘少於 k 個字元,則將剩餘的所有全部反轉。如果有小於 2k 但大於或等於 k 個字元,則反轉前 k 個字元,並將剩餘的字元保持原樣。示例 輸入 s abcdefg k 2輸出 bacdfeg...

LeetCode 541 反轉字串 II

給定乙個字串和乙個整數 k,你需要對從字串開頭算起的每個 2k 個字元的前k個字元進行反轉。如果剩餘少於 k 個字元,則將剩餘的所有全部反轉。如果有小於 2k 但大於或等於 k 個字元,則反轉前 k 個字元,並將剩餘的字元保持原樣。step1 把字串長度 對2k取餘剩下的數字,以及 2k得到的結果儲...

Leetcode 541 反轉字串II

給定乙個字串和乙個整數 k,你需要對從字串開頭算起的每個 2k 個字元的前k個字元進行反轉。如果剩餘少於 k 個字元,則將剩餘的所有全部反轉。如果有小於 2k 但大於或等於 k 個字元,則反轉前 k 個字元,並將剩餘的字元保持原樣。示例 輸入 s abcdefg k 2輸出 bacdfeg 要求 該...