You are asked to design a file system that allows you to create new paths and associate them with different values.
The format of a path is one or more concatenated strings of the form:
/ followed by one or more lowercase English letters. For example, “/leetcode" and “/leetcode/problems" are valid paths while an empty string "" and "/" are not.Implement the
FileSystem class:bool createPath(string path, int value) Creates a new path and associates a value to it if possible and returns true. Returns false if the path already exists or its parent path doesn’t exist.
int get(string path) Returns the value associated with path or returns -1 if the path doesn’t exist.Example 1:
Input:
[“FileSystem”,”createPath”,”get”]
[[],[“/a”,1],[“/a”]]
Output:
[null,true,1]
Explanation:
FileSystem fileSystem = new FileSystem();
fileSystem.createPath(“/a”, 1); // return true
fileSystem.get(“/a”); // return 1
Example 2:
Input:
[“FileSystem”,”createPath”,”createPath”,”get”,”createPath”,”get”]
[[],[“/leet”,1],[“/leet/code”,2],[“/leet/code”],[“/c/d”,1],[“/c”]]
Output:
[null,true,true,2,false,-1]
Explanation:
FileSystem fileSystem = new FileSystem();
fileSystem.createPath(“/leet”, 1); // return true
fileSystem.createPath(“/leet/code”, 2); // return true
fileSystem.get(“/leet/code”); // return 2
fileSystem.createPath(“/c/d”, 1); // return false because the parent path “/c” doesn’t exist.
fileSystem.get(“/c”); // return -1 because this path doesn’t exist.
Constraints:
The number of calls to the two functions is less than or equal to
10<sup>4</sup> in total.
2 <= path.length <= 100*
1 <= value <= 10<sup>9</sup>题目大意:
设计文件系统,支持创建路径,路径含key, value
Trie解题思路:
用Trie, is_end变成key, value
解题步骤:
N/A
注意事项:
- 遍历用1开始,因为首个/前面是空字符串
Python代码:
1 | class FileSystem(TestCases): |
算法分析:
时间复杂度为O(n),空间复杂度O(1)
算法II HashMap解题思路:
用前缀法
Python代码:
1 | class FileSystem2(TestCases): |
算法分析:
时间复杂度为O(n),空间复杂度O(1)


