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