สมมติว่าเรามีสตริง s และอีกค่าหนึ่งคือ k เราจะลบอักขระที่ซ้ำกันที่เก่าที่สุด k ตัวที่ซ้ำกัน และส่งคืนสตริงสุดท้าย
ดังนั้น หากอินพุตเป็น s ="paaappmmmma" k =3 เอาต์พุตจะเป็น "ma" เช่นเดียวกับเมื่อเราลบ "a" สามรายการเพื่อให้ได้ "pppmmmma" จากนั้นเราลบสาม "p" เพื่อรับ "mmmma" จากนั้นลบสามในสี่ "m" เพื่อรับ "ma"
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:
- ทำตามขั้นตอนต่อไปนี้อย่างไม่สิ้นสุด ทำ
- นับ :=0
- chars :=รับอักขระที่ไม่ซ้ำจาก s
- สำหรับอักขระ c แต่ละตัวใน chars ทำ
- ถ้า k ต่อเนื่อง c อยู่ใน s แล้ว
- ลบ k ต่อเนื่อง c จาก s
- นับ :=นับ + 1
- ถ้า k ต่อเนื่อง c อยู่ใน s แล้ว
- ถ้าการนับเท่ากับ 0 แล้ว
- ออกมาจากวงจร
- คืนสินค้า
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น:
ตัวอย่าง
class Solution: def solve(self, s, k): while True: count = 0 chars = set(s) for c in chars: if c * k in s: s = s.replace(c * k, "") count += 1 if count == 0: break return s ob = Solution() s = "paaappmmmma" k = 3 print(ob.solve(s, k))
อินพุต
"paaappmmmma", 3
ผลลัพธ์
ma