মনে করুন আমাদের একটি ফাইল সিস্টেম ডিজাইন করতে হবে যা নিচের দুটি ফাংশন প্রদান করবে:
createPath(path, value)— এটি একটি নতুন পাথ তৈরি করে এবং সেটির সাথে একটি ভ্যালু অ্যাসোসিয়েট করে যদি সম্ভব হয়, এবংTrueরিটার্ন করে। যদি পাথটি ইতিমধ্যে থাকা থাকে বা এর প্যারেন্ট পাথ না থাকে তবেFalseরিটার্ন করে।get(path)— এটি একটি পাথের সাথে অ্যাসোসিয়েটেড ভ্যালু খুঁজে বের করে বা পাথ না থাকলে-1রিটার্ন করে।
একটি পাথের ফরম্যাট হলো এক বা অধিক কনক্যাটেনেটেড স্ট্রিং যা ফরওয়ার্ড স্ল্যাশ (/) দিয়ে শুরু হয় এবং তারপর এক বা অধিক লোয়ারকেস ইংরেজি অক্ষর। উদাহরণস্বরূপ, /programming এবং /programming/problems বৈধ পাথ, কিন্তু খালি স্ট্রিং এবং / বৈধ নয়। এখানে আমাদের এই দুটি ফাংশন ইম্প্লিমেন্ট করতে হবে।
ইনপুট হিসেবে, যদি আমরা একটি ফাইল সিস্টেম তৈরি করি, তারপর ['/a', 1] দিয়ে পাথ তৈরি করি, তারপর get() কল করি প্যারামিটার ['/a'] দিয়ে, তবে আউটপুট হবে 1।
এটি সমাধান করতে আমরা নিচের ধাপগুলো ফলো করব:
dনামক একটি ম্যাপ ডিফাইন করুন।createPathমেথডpathএবংvalueনেবে, এটি নিচের মতো কাজ করবে:p := path কে '/' দিয়ে স্প্লিট করে কম্পোনেন্ট লিস্টx := dfor i in range 1 to len(p) - 1if p[i] not in x, তবেreturn falsex := x[p[i]][1]
if p[-1] in x, তবেreturn falsex[p[-1]] := [v, {}](v এবং খালি ম্যাপের লিস্ট)return true
get()মেথডpathনেবে:x := dp := path কে '/' দিয়ে স্প্লিট করে কম্পোনেন্ট লিস্টfor i in range 1 to len(p) - 1if p[i] not in x, তবেreturn -1x := x[p[i]][1]
if p[-1] in x, তবেreturn x[p[-1]][0], অন্যথায়return -1
উদাহরণ (Python)
নিচের ইমপ্লিমেন্টেশন দেখুন ভালো বুঝতে।
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"))
ইনপুট
অবজেক্ট ইনিশিয়ালাইজ করুন, তারপর createPath("/a", 1) এবং get("/a") কল করুন
আউটপুট
True 1