Here is the interview question prompt, presented for reference.
In Unix-style systems, we can define the path to a file or directory in two ways; absolute path
and canonical path
.
An absolute path
specifies the location of a file or directory from the root directory and begins with a single or multiple slash /
characters. It can also have a period '.'
(referring to the current directory), a double period '..'
(refers to the directory up a level), or trailing and multiple consecutive slashes '//'
(treated as a single slash '/'
) in the path.
A canonical path
is a simplified form of an absolute path
. Its components are all names of real directories or files. This means that it excludes .
, ..
, trailing
, and repeated slash characters
.
Now consider that you are given a string path
(an absolute path
), to a file or directory in a Unix-style file system. Convert it to the simplified canonical path
.
For this particular problem, any other format of periods such as
'...'
is treated as file/directory names.
Let's consider an example. Suppose the path
given is /a/./b/
. According to the path
, first, we get to directory 'a', so we add the same to our canonical path. Next, we encounter a single period, so we do not make any changes to the canonical path and move on (a single period '.'
indicates the current directory, so we do not need to add anything to our canonical path). We move to the next directory 'b' and add it to the canonical path. This gives our final answer.
path.length
<= 3000path
consists of English letters, digits, period '.', slash '/' or '_'.path
is a valid absolute Unix path.You can see the full challenge with visuals at this link.
Challenges • Asked 6 months ago by Jake from AlgoDaily
This is the main discussion thread generated for Simplifying Absolute Paths (Main Thread).