สมมติว่าเรามีเส้นทาง Unix ในรายการสตริง เราต้องหาเวอร์ชันที่แก้ไขแล้ว ดังที่เราทราบใน Unix ".." หมายถึงไดเร็กทอรีก่อนหน้าและ "." หมายถึงอยู่ในไดเร็กทอรีปัจจุบัน การแก้ไขในที่นี้หมายถึงการประเมินสัญลักษณ์ทั้งสองเพื่อที่เราจะได้ไดเร็กทอรีสุดท้ายที่เรากำลังดำเนินการอยู่
ดังนั้น หากอินพุตเป็นเหมือน path =["usr", "..", "usr", ".", "local", "etc", "foo"] ผลลัพธ์จะเป็น ['usr', 'local', 'etc', 'foo'] ในส่วนที่แสดงถึง "/usr/../usr/./local/etc" ซึ่งแก้ไขเป็น "/usr/local/etc/foo"
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- s :=รายการใหม่
- สำหรับแต่ละองค์ประกอบ i ในเส้นทาง ทำ
- ถ้าฉันเหมือนกับ '..' แล้ว
- ถ้า s ไม่ว่างก็
- ลบองค์ประกอบสุดท้ายออกจาก s
- ถ้า s ไม่ว่างก็
- มิฉะนั้นเมื่อฉันไม่เหมือน '.' แล้ว
- ใส่ i ต่อท้าย s
- ถ้าฉันเหมือนกับ '..' แล้ว
- คืนสินค้า
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, path): s = [] for i in path: if i == '..': if len(s) >0: s.pop() elif i !='.': s.append(i) return s ob = Solution() print(ob.solve(["usr", "..", "usr", ".", "local", "etc", "foo"]))
อินพุต
["usr", "..", "usr", ".", "local", "etc", "foo"]
ผลลัพธ์
['usr', 'local', 'etc', 'foo']