สมมติว่าเรามีสตริง 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"