ภาพรวม
โจทย์ลบตัวอักษรซ้ำติดกันในสตริงที่ประกอบด้วย 'R' และ 'L' เท่านั้น ให้เหลือเพียงตัวอักษรสลับกัน (RLRL... หรือ LRLR...)
ตัวอย่าง
อินพุต: "LLLRLRR"
กระบวนการ:
- L (เก็บ) → seen=L
- L (ซ้ำ seen) → ข้าม
- L (ซ้ำ seen) → ข้าม
- R (ต่าง seen) → เก็บ, seen=R
- L (ต่าง seen) → เก็บ, seen=L
- R (ต่าง seen) → เก็บ, seen=R
- R (ซ้ำ seen) → ข้าม
เอาต์พุต: "LRLR"
โค้ด Python
class Solution:
def solve(self, s):
seen = s[0]
ans = s[0]
for i in s[1:]:
if i != seen:
ans += i
seen = i
return ans
ob = Solution()
print(ob.solve("LLLRLRR"))
วิธีอื่น (itertools.groupby)
from itertools import groupby
def remove_consecutive_duplicates(s):
return ''.join(k for k, _ in groupby(s))
ความซับซ้อน
- เวลา: O(n)
- พื้นที่: O(n) สำหรับสตริงผลลัพธ์
ผลลัพธ์
LRLR