用Python设计文件系统

假设我们必须设计一个提供这两个功能的文件系统-

  1. createPath(path,value)-这将创建一个新路径,并在可能的情况下将值关联到该路径并返回True。如果路径已经存在或其父路径不存在,则返回False。

  2. get(path)-这将查找与路径关联的值,如果路径不存在,则返回-1。

路径的格式是一个或多个串联的字符串,形式为-(正斜杠)/,后跟一个或多个小写英文字母。例如,/ programming和/ programming / problems是有效路径,而空字符串和/不是。在这里,我们必须实现这两个功能。

因此,作为输入,如果我们创建一个文件系统,然后使用['/ a',1]创建路径,然后在使用get()带有参数['/ a']的路径后,输出将为1。

为了解决这个问题,我们将遵循以下步骤-

  • 定义映射d

  • createPath方法将获取路径和值,其作用类似于-

  • p:=路径的组成部分列表,用“ /”分隔

  • x:= d

  • 对于i,范围为1到p – 1的长度

    • 如果x中不存在p [i],则返回false

    • x:= x [p [i]] [1]

  • 如果p的最后一个元素在x中,则返回false

  • x [p的最后一个元素]:=具有v和空映射的列表

  • 返回真

  • get()方法正在路径

  • x:= d

  • p:=路径的组成部分列表,用“ /”分隔

  • 对于i,范围为1到p – 1的长度

    • 如果x中不存在p [i],则返回-1

    • x:= x [p [i]] [1]

  • 如果p的最后一个元素在x中,则返回x [p的最后一个元素] [0],否则返回-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"))

输入值

Initialize the object, then call createPath(“/a”, 1) and get(“/a”)

输出结果

True
1