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

ลบรายการที่ซ้ำกันทั้งหมดในสตริงใน Python


สมมติว่าเรามีสตริง S ของตัวพิมพ์เล็ก จะดำเนินการลบซ้ำ ทำได้โดยเลือกตัวอักษรสองตัวที่อยู่ติดกันและเท่ากับ แล้วลบออก

เราจะลบรายการที่ซ้ำกันซ้ำๆ จาก S จนกว่าจะไม่มีรายการที่ซ้ำกันเหลืออยู่

ส่งคืนสตริงหลังจากลบที่ซ้ำกันทั้งหมดเสร็จสิ้น รับรองว่าคำตอบนั้นไม่ซ้ำใคร

สมมติว่าสตริงคือ "abbacaca" จากนั้นคำตอบจะเป็น "caca" ในตอนแรกให้ลบไฟล์ที่ซ้ำกัน bb จากนั้นสตริงคือ "aacaca" จากนั้นลบ aa จากนั้นสตริงคือ "caca" ดังนั้นจึงไม่มีรายการที่ซ้ำกันดังกล่าว

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

  • กำหนดอาร์เรย์ st และเริ่มต้น i :=0
  • ในขณะที่ฉัน <ความยาวของสตริง −
    • หาก st มีองค์ประกอบบางส่วน และองค์ประกอบสุดท้ายของ st =st[i] ให้เพิ่ม i ขึ้น 1 และลบองค์ประกอบสุดท้ายออกจาก st
    • มิฉะนั้นให้เพิ่ม string[i] ลงใน st ให้เพิ่ม i 1
  • สุดท้ายรวมองค์ประกอบทั้งหมดใน st เป็นสตริงและส่งคืน

ตัวอย่าง

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

class Solution(object):
   def removeDuplicates(self, S):
      st = []
      i = 0
      while i < len(S):
         if len(st)!=0 and st[-1]==S[i]:
            i+=1
            st.pop(-1)
         else:
            st.append(S[i])
            i+=1
      return "".join(i for i in st)
ob1 = Solution()
print(ob1.removeDuplicates("abbacaca"))

อินพุต

"abbacaca"

ผลลัพธ์

"caca"