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

โปรแกรมค้นหากระโดดขั้นต่ำที่จำเป็นในการกลับจากโฟลเดอร์ไปยังโฮมใน Python


สมมติว่าเรามีบันทึกที่เรามีเส้นทางเข้าสู่โฟลเดอร์ อาจมีสัญลักษณ์ต่างกัน เช่น -

  • "../" :ย้ายไปยังโฟลเดอร์หลักจากโฟลเดอร์ปัจจุบัน (หากเราอยู่ที่โฟลเดอร์หลัก ห้ามเปลี่ยนตำแหน่ง)

  • "./" :ยังคงอยู่ในโฟลเดอร์ปัจจุบัน

  • "x/" :ย้ายไปที่โฟลเดอร์ย่อยชื่อ x.

จากบันทึก เราต้องหาจำนวนการดำเนินการขั้นต่ำที่จำเป็นในการกลับมาจากโฟลเดอร์สุดท้ายที่เราหยุดไปที่โฟลเดอร์หลัก

ดังนั้น หากอินพุตเป็นเหมือน logs =["Dir1/","Dir2/","../","Dir2/","Dir3/","./"] ผลลัพธ์จะเป็น 3

โปรแกรมค้นหากระโดดขั้นต่ำที่จำเป็นในการกลับจากโฟลเดอร์ไปยังโฮมใน Python

จากภาพจะเห็นว่าเราต้องถอยสามทุ่มกว่าจะถึงบ้าน

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

  • stk :=รายการใหม่

  • สำหรับแต่ละรายการในบันทึกให้ทำ

    • ถ้าฉันเหมือนกับ "../" และขนาดของ stk> 0 แล้ว

      • ลบองค์ประกอบสุดท้ายออกจาก stk

    • ไม่อย่างนั้นเมื่อฉันไม่เหมือน "./" และฉันไม่เหมือนกับ "../" ดังนั้น

      • ใส่ i ต่อท้าย stk

    • มิฉะนั้น

      • ไปทำซ้ำต่อไป

  • ส่งคืนจำนวนรายการใน stk

ตัวอย่าง (Python)

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

def solve(logs):
   stk = []
   for i in logs:
      if i == "../" and len(stk) > 0:
         stk.pop()
      elif i != "./" and i != "../":
         stk.append(i)
      else:
         continue
   return len(stk)

logs = ["Dir1/","Dir2/","../","Dir2/","Dir3/","./"]
print(solve(logs))

อินพุต

["Dir1/","Dir2/","../","Dir2/","Dir3/","./"]

ผลลัพธ์

3