मान लीजिए कि हमें एक फाइल सिस्टम डिजाइन करना है जो इन दो कार्यों को प्रदान करता है -
- createPath(path, value) - यह एक नया पथ बनाता है और यदि संभव हो तो इसे एक मान जोड़ता है और सही लौटाता है। यदि पथ पहले से मौजूद है या उसका मूल पथ मौजूद नहीं है तो यह गलत लौटाता है।
- get(path) - यह पथ से जुड़े मान को ढूंढता है या यदि पथ मौजूद नहीं है तो -1 लौटाता है।
पथ का प्रारूप प्रपत्र के एक या अधिक संयोजित तार होते हैं - (फॉरवर्ड स्लैश) / उसके बाद एक या अधिक लोअरकेस अंग्रेजी अक्षर। उदाहरण के लिए, /प्रोग्रामिंग और /प्रोग्रामिंग/समस्याएं वैध पथ हैं जबकि एक खाली स्ट्रिंग और / नहीं हैं। यहां हमें इन दो कार्यों को लागू करना है।
इसलिए इनपुट के रूप में, यदि हम एक फाइल-सिस्टम बनाते हैं, तो ['/a', 1] का उपयोग करके एक पथ बनाएं, फिर पैरामीटर ['/a'] के साथ get() का उपयोग करने के बाद, आउटपुट 1 होगा। पी>
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- मानचित्र को परिभाषित करें d
- क्रिएटपाथ विधि पथ और मान लेगी, यह इस तरह कार्य करेगी -
- p :='/' से विभाजित पथ के घटकों की सूची
- x :=d
- i के लिए 1 से p - 1 की लंबाई के बीच
- अगर p[i] x में मौजूद नहीं है, तो झूठी वापसी करें
- x :=x[p[i]][1]
- यदि p का अंतिम अवयव x में है, तो असत्य लौटाएं
- x[p का अंतिम तत्व] :=v और खाली मानचित्र वाली एक सूची
- सही लौटें
- प्राप्त () विधि पथ ले रही है
- x :=d
- p :='/' से विभाजित पथ के घटकों की सूची
- i के लिए 1 से p - 1 की लंबाई के बीच
- अगर p[i] x में मौजूद नहीं है, तो -1 लौटाएं
- x :=x[p[i]][1]
- यदि p का अंतिम तत्व x में है, तो x [p का अंतिम तत्व] [0] लौटाएं, अन्यथा -1 लौटाएं
उदाहरण (पायथन)
आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -
class FileSystem(object): def __init__(self): self.d = {} def create(self, p, v): p = p.split("/") x = self.d for i in range(1,len(p)-1): if p[i] not in x: return False x = x[p[i]][1] if p[-1] in x: return False x[p[-1]] = [v,{}] return True def get(self, p): x = self.d p = p.split("/") for i in range(1,len(p)-1): if p[i] not in x: return -1 x= x[p[i]][1] if p[-1] in x: return x[p[-1]][0] else: return -1 ob = FileSystem() print(ob.create("/a", 1)) print(ob.get("/a"))
इनपुट
Initialize the object, then call createPath(“/a”, 1) and get(“/a”)
आउटपुट
True 1