71 Simplify Path
Given an absolute path for a file (Unix-style), simplify it.
For example,
path="/home/"
, =>"/home"
path="/a/./b/../../c/"
, =>"/c"
Corner Cases:
Did you consider the case where path = "/../"?
In this case, you should return "/".
Another corner case is the path might contain multiple slashes '/' together, such as "/home//foo/".
In this case, you should ignore redundant slashes and return "/home/foo".
The Idea: This problem requires some Unix domain knowledge. .
means current directory, so in terms of a path, it adds nothing and can be ignored. ..
means move up to parent directory, and ...
means move up recursively. Utilizing a stack is a natural solution because moving to a parent directory is equivalently to moving to the previous or most recent element in an array.
Complexity: O(n) time and space
Last updated