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