0588:设计内存文件系统(★★)
目录
题目
设计一个内存文件系统,模拟以下功能:
实现文件系统类:
FileSystem()初始化系统对象List<String> ls(String path)- 如果
path是一个文件路径,则返回一个仅包含该文件名称的列表。 - 如果
path是一个目录路径,则返回该目录中文件和 目录名 的列表。
- 如果
答案应该 按字典顺序 排列。
void mkdir(String path)根据给定的路径创建一个新目录。给定的目录路径不存在。如果路径中的中间目录不存在,您也应该创建它们。void addContentToFile(String filePath, String content)- 如果
filePath不存在,则创建包含给定内容content的文件。 - 如果
filePath已经存在,将给定的内容content附加到原始内容。
- 如果
String readContentFromFile(String filePath)返回filePath下的文件内容。
示例 1:

输入:
["FileSystem","ls","mkdir","addContentToFile","ls","readContentFromFile"]
[[],["/"],["/a/b/c"],["/a/b/c/d","hello"],["/"],["/a/b/c/d"]]
输出:
[null,[],null,null,["a"],"hello"]
解释:
FileSystem fileSystem = new FileSystem();
fileSystem.ls("/"); // 返回 []
fileSystem.mkdir("/a/b/c");
fileSystem.addContentToFile("/a/b/c/d", "hello");
fileSystem.ls("/"); // 返回 ["a"]
fileSystem.readContentFromFile("/a/b/c/d"); // 返回 "hello"
注意:
1 <= path.length, filePath.length <= 100path和filePath都是绝对路径,除非是根目录‘/’自身,其他路径都是以‘/’开头且 不 以‘/’结束。- 你可以假定所有操作的参数都是有效的,即用户不会获取不存在文件的内容,或者获取不存在文件夹和文件的列表。
- 你可以假定所有文件夹名字和文件名字都只包含小写字母,且同一文件夹下不会有相同名字的文件夹或文件。
1 <= content.length <= 50ls,mkdir,addContentToFile, andreadContentFromFile最多被调用300次
分析
典型的字典树,用 ‘#’ 标记文件即可。
解答
|
|
48 ms