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

โปรแกรมหา Unix path ที่ resolve แล้วใน Python

ให้ Unix path เป็นลิสต์สตริง (เช่น ["usr","..","usr",".","local","etc","foo"]) Resolve ตามกฎ: ".." = ย้อนโฟลเดอร์ก่อนหน้า, "." = โฟลเดอร์ปัจจุบัน

ตัวอย่าง: ["usr","..","usr",".","local","etc","foo"] → ["usr","local","etc","foo"]

อัลกอริธึม Stack

  • เดินผ่านแต่ละส่วน: ถ้าเป็น ".." และ stack ไม่ว่าง → pop
  • ถ้าไม่ใช่ "." และไม่ใช่ ".." → push

การนำไปใช้

class Solution:
    def solve(self, path):
        s = []
        for part in path:
            if part == '..':
                if s:
                    s.pop()
            elif part != '.':
                s.append(part)
        return s

ob = Solution()
print(ob.solve(["usr","..","usr",".","local","etc","foo"]))
# ['usr', 'local', 'etc', 'foo']