मान लीजिए कि हमारे पास यूनिक्स पथ है, स्ट्रिंग्स की सूची में, हमें इसका हल किया गया संस्करण ढूंढना है। जैसा कि हम यूनिक्स में जानते हैं, ".." पिछली निर्देशिका को दर्शाता है और "।" वर्तमान निर्देशिका पर रहने को दर्शाता है। यहां हल करना दो प्रतीकों के मूल्यांकन को इंगित करता है ताकि हमें वह अंतिम निर्देशिका मिल जाए जिसमें हम वर्तमान में हैं।
इसलिए, यदि इनपुट पथ =["usr", "..", "usr", "।", "local", "etc", "foo"] जैसा है, तो आउटपुट ['usr', 'स्थानीय', 'आदि', 'फू'], जैसा कि भाग "/usr/../usr/./local/etc" का प्रतिनिधित्व करता है जो "/usr/local/etc/foo" को हल करता है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- s :=एक नई सूची
- पथ में प्रत्येक तत्व के लिए, करते हैं
- अगर मैं '..' जैसा ही हूं, तो
- अगर s खाली नहीं है, तो
- एस से अंतिम तत्व हटाएं
- अगर s खाली नहीं है, तो
- अन्यथा जब मैं '.' के समान नहीं होता, तब
- s के अंत में i डालें
- अगर मैं '..' जैसा ही हूं, तो
- वापसी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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']