Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ลบตัวอักษรซ้ำติดกันในสตริง R/L ด้วย Python

ภาพรวม

โจทย์ลบตัวอักษรซ้ำติดกันในสตริงที่ประกอบด้วย '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