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

โปรแกรมค้นหาสตริงหลังจากลบอักขระที่ซ้ำกันใน Python


สมมติว่าเรามีสตริง s เราจะลบอักขระที่ซ้ำกันตัวแรกที่ซ้ำกันติดต่อกัน เราต้องหาเส้นสุดท้ายให้เจอ

ดังนั้น หากอินพุตเป็น s ="xyyyxzz" ผลลัพธ์จะเป็น "z" เนื่องจาก "yyy" เป็นอักขระที่ซ้ำกันตัวแรกที่ซ้ำกันซึ่งจะถูกลบ ดังนั้นเราจึงมี "xxxz" จากนั้น "xxx" จะถูกลบเพื่อลงท้ายด้วย "z"

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • stack :=สแต็คใหม่
  • ผม :=0
  • ในขณะที่ฉัน <ขนาดของ s ทำ
    • ถ้า stack ไม่ว่างและด้านบนของ stack เหมือนกับ s[i] แล้ว
      • x :=ลบองค์ประกอบสุดท้ายออกจากสแต็ก
      • ในขณะที่ i <ขนาดของ s และ x เท่ากับ s[i] ให้ทำ
        • ผม :=ผม + 1
      • i :=i - 1
    • มิฉะนั้น
      • ดัน s[i] ลงในสแต็ก
    • ผม :=ผม + 1
  • กลับมาหลังจากเข้าร่วมองค์ประกอบสแต็ก

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

class Solution:
   def solve(self, s):
      stack = []
      i = 0
      while i < len(s):
         if len(stack) and stack[-1] == s[i]:
            x = stack.pop()
            while i < len(s) and x == s[i]:
               i += 1
            i -= 1
            else:
               stack.append(s[i])
            i += 1
      return "".join(stack)
ob = Solution()
s = "xyyyxxz"
print(ob.solve(s))

อินพุต

"xyyyxxz"

ผลลัพธ์

z