สมมติว่าเรามีบันทึกที่เรามีเส้นทางเข้าสู่โฟลเดอร์ อาจมีสัญลักษณ์ต่างกัน เช่น -
-
"../" :ย้ายไปยังโฟลเดอร์หลักจากโฟลเดอร์ปัจจุบัน (หากเราอยู่ที่โฟลเดอร์หลัก ห้ามเปลี่ยนตำแหน่ง)
-
"./" :ยังคงอยู่ในโฟลเดอร์ปัจจุบัน
-
"x/" :ย้ายไปที่โฟลเดอร์ย่อยชื่อ x.
จากบันทึก เราต้องหาจำนวนการดำเนินการขั้นต่ำที่จำเป็นในการกลับมาจากโฟลเดอร์สุดท้ายที่เราหยุดไปที่โฟลเดอร์หลัก
ดังนั้น หากอินพุตเป็นเหมือน logs =["Dir1/","Dir2/","../","Dir2/","Dir3/","./"] ผลลัพธ์จะเป็น 3พี>
จากภาพจะเห็นว่าเราต้องถอยสามทุ่มกว่าจะถึงบ้าน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
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