Simplify the Directory

Posted: 25 Aug, 2020
Difficulty: Moderate


Try Problem

You are given a path to a file/directory in Unix-style of length N, In a Unix-style file system, a dot(.) refers to the current directory. A double dot(..) refers to the previous directory in reference to the current directory. If there are multiple slashes between two directories you should consider it as a single slash.

Now, for a given directory path as a string, you are required to simplify the same and tell the final destination in the directory structure or the path.

The simplified path should always begin with a slash(/) and there must be a single slash between two directory names. There should not be a trailing slash.

Input Format :
The first line contains an integer T which denotes the number of test cases to be run. 

The first and only line of each testcase contains a single string denoting the path .
Output Format:
For each test case, print a string representing a simplified path to the resulting file or directory.
You are not required to print anything explicitly. It has already been taken care of. Just implement the given function.
Constraints :
1 <= T <= 100
0 <= N <= 10^5
Where N is the length of the input path.

Time Limit : 1 sec
Approach 1
  1. Initialize a stack that will store the directories.
  2. For every directory between slashes check

  a). If it is a dot then continue.

  b). If it is double dot then pop the directory from the stack.

  c). Else push into the stack.

  1. Now, take an empty string and a temporary stack.
  2. Pop all the elements from the first stack and store into a temporary stack.
  3. Pop all the elements from the temporary stack and store into an answer string and add a slash.
  4. Return the answer string.
Try Problem