สมมติว่าเรามีสตริงที่แทนอักขระที่พิมพ์ลงในโปรแกรมแก้ไข สัญลักษณ์ "<-" หมายถึง Backspace เราต้องหาสถานะปัจจุบันของตัวแก้ไข
ดังนั้น หากอินพุตเป็นแบบ s ="ilovepython<-<-ON" เอาต์พุตจะเป็น "ilovepythON" เนื่องจากมีอักขระแบ็คสเปซสองตัวหลัง "ilovepython" ระบบจะลบอักขระสองตัวสุดท้าย จากนั้นพิมพ์ "ON" อีกครั้ง .
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- res :=รายการใหม่
- สำหรับแต่ละ i ใน s ทำ
- ถ้าฉันเหมือนกับ '-' และอักขระตัวสุดท้ายของ res เหมือนกับ '<' ดังนั้น
- ลบองค์ประกอบสุดท้ายออกจาก res
- ถ้า res ไม่ว่างก็
- ลบองค์ประกอบสุดท้ายออกจาก res
- มิฉะนั้น
- ใส่ i ต่อท้าย res
- ถ้าฉันเหมือนกับ '-' และอักขระตัวสุดท้ายของ res เหมือนกับ '<' ดังนั้น
- รวมองค์ประกอบที่มีอยู่ใน res และ return
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, s): res = [] for i in s: if i == '-' and res[-1] == '< ': res.pop() if res: res.pop() else: res.append(i) return "".join(res) ob = Solution() print(ob.solve("ilovepython<-<-ON"))
อินพุต
"ilovepython<-<-ON"
ผลลัพธ์
ilovepython<-<-ON