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

โปรแกรมค้นหาเส้นทางสไตล์ Unix ที่แก้ไขแล้วใน Python


สมมติว่าเรามีเส้นทาง Unix ในรายการสตริง เราต้องหาเวอร์ชันที่แก้ไขแล้ว ดังที่เราทราบใน Unix ".." หมายถึงไดเร็กทอรีก่อนหน้าและ "." หมายถึงอยู่ในไดเร็กทอรีปัจจุบัน การแก้ไขในที่นี้หมายถึงการประเมินสัญลักษณ์ทั้งสองเพื่อที่เราจะได้ไดเร็กทอรีสุดท้ายที่เรากำลังดำเนินการอยู่

ดังนั้น หากอินพุตเป็นเหมือน path =["usr", "..", "usr", ".", "local", "etc", "foo"] ผลลัพธ์จะเป็น ['usr', 'local', 'etc', 'foo'] ในส่วนที่แสดงถึง "/usr/../usr/./local/etc" ซึ่งแก้ไขเป็น "/usr/local/etc/foo"

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • s :=รายการใหม่
  • สำหรับแต่ละองค์ประกอบ i ในเส้นทาง ทำ
    • ถ้าฉันเหมือนกับ '..' แล้ว
      • ถ้า 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']