मान लीजिए कि हमारे पास एक लॉग है जहां हमारे पास फ़ोल्डरों में प्रवेश करने का पथ है, तो अलग-अलग प्रतीक हो सकते हैं जैसे -
-
"../" :वर्तमान फ़ोल्डर से मूल फ़ोल्डर में ले जाएँ। (यदि हम मुख्य फ़ोल्डर में हैं, तो स्थान न बदलें)।
-
"./" :वर्तमान फ़ोल्डर में बने रहें।
-
"x/" :x नाम के चाइल्ड फोल्डर में ले जाएँ।
लॉग से हमें अंतिम फ़ोल्डर से वापस आने के लिए आवश्यक न्यूनतम संख्या में संचालन की आवश्यकता होती है जहां हम मुख्य फ़ोल्डर में रुकते हैं।
इसलिए, अगर इनपुट लॉग्स =["Dir1/",,"Dir2/","../","Dir2/",,"Dir3/","./"] जैसा है, तो आउटपुट 3होगा। पी>
छवि से हम देख सकते हैं कि हमें घर पहुंचने के लिए तीन बार पीछे हटना होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
stk :=एक नई सूची
-
लॉग में प्रत्येक आइटम के लिए, करते हैं
-
अगर मैं "../" और stk> 0 के आकार के समान हूं, तो
-
stk से अंतिम तत्व हटाएं
-
-
अन्यथा जब मैं "./" जैसा नहीं होता और मैं "../" जैसा नहीं होता, तब
-
stk के अंत में i डालें
-
-
अन्यथा,
-
अगले पुनरावृत्ति के लिए जाएं
-
-
-
stk में आइटम की वापसी संख्या
उदाहरण (पायथन)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
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