給定乙個字串 s 和乙個整數 k,你需要對從字串開頭算起的每隔 2k 個字元的前 k 個字元進行反轉。
如果剩餘字元少於 k 個,則將剩餘字元全部反轉。
如果剩餘字元小於 2k 但大於或等於 k 個,則反轉前 k 個字元,其餘字元保持原樣。
一、自己寫的,有些冗長
1class
solution
8else
17}18
}19return
s;20
}21 };
就是簡單模擬而已,自己寫的很爛!自己的想法時,用外層迴圈控制有多少個2k需要reverse,內部迴圈來做reverse,反轉的區間用 i,j 每次更新規律來控制。外部迴圈是向上取整,這裡用到了乙個數論的小結論:
n/m 向上取整: = (n - 1) / m + 1
思考怎樣進一步優化迴圈,將雙迴圈去掉?
二、抓住剩餘,題目化簡為了
1.每隔k個反轉k個
2.剩餘不足k個全部反轉
1class
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 要求 該...