# Simplify Path LeetCode Solution

Here, We see Simplify Path LeetCode Solution. This Leetcode problem is done in many programming languages like C++, Java, JavaScript, Python, etc. with different approaches.

# List of all LeetCode Solution

## Problem Statement

Given a string `path`, which is an absolute path (starting with a slash `'/'`) to a file or directory in a Unix-style file system, convert it to the simplified canonical path.

In a Unix-style file system, a period `'.'` refers to the current directory, a double period `'..'` refers to the directory up a level, and any multiple consecutive slashes (i.e. `'//'`) are treated as a single slash `'/'`. For this problem, any other format of periods such as `'...'` are treated as file/directory names.

The canonical path should have the following format:

• The path starts with a single slash `'/'`.
• Any two directories are separated by a single slash `'/'`.
• The path does not end with a trailing `'/'`.
• The path only contains the directories on the path from the root directory to the target file or directory (i.e., no period `'.'` or double period `'..'`)

Return the simplified canonical path.

```Example 1:

Input: path = "/home/"
Output: "/home"
Explanation: Note that there is no trailing slash after the last directory name.

Example 2:

Input: path = "/../"
Output: "/"
Explanation: Going one level up from the root directory is a no-op, as the root level is the highest level you can go.

Example 3:

Input: path = "/home//foo/"
Output: "/home/foo"
Explanation: In the canonical path, multiple consecutive slashes are replaced by a single one.```

## Simplify Path Leetcode Solution C++

``````class Solution {
public:
string simplifyPath(string path) {
string res, s;
stack<string>stk;
stringstream ss(path);
while(getline(ss, s, '/')) {
if (s == "" || s == ".") continue;
if (s == ".." && !stk.empty()) stk.pop();
else if (s != "..") stk.push(s);
}
while(!stk.empty()){
res = "/"+ stk.top() + res;
stk.pop();
}
return res.empty() ? "/" : res;
}
};```Code language: PHP (php)```

## Simplify Path Leetcode Solution Java

``````class Solution {
public String simplifyPath(String path) {
String[] dir = path.split("/");
String[] stack = new String[dir.length];
int ptr = 0;
for(int i = 0; i < dir.length; i++){
if(dir[i].equals(".") || dir[i].equals("")){
continue;
}else if(dir[i].equals("..")){
if(ptr > 0) ptr--;
}else{
stack[ptr] = dir[i];
ptr++;
}
}
StringBuilder result = new StringBuilder();
for(int i = 0; i < ptr; i++){
result.append("/");
result.append(stack[i]);
}
return result.length() == 0 ? "/" : result.toString();
}
}```Code language: JavaScript (javascript)```

## Simplify Path Leetcode Solution JavaScript

``````/**
* @param {string} path
* @return {string}
*/
var simplifyPath = function(path) {
let stack = [];
path = path.split('/');

for (let i=0;i<path.length;i++) {
if (path[i]=='.' || path[i]=='') continue;
if (path[i]=='..') stack.pop();
else stack.push(path[i]);
}

return '/'+stack.join('/');
};```Code language: JavaScript (javascript)```

## Simplify Path Leetcode Solution Python

``````class Solution(object):
def simplifyPath(self, path):
stack = []
for token in path.split('/'):
if token in ('', '.'):
pass
elif token == '..':
if stack: stack.pop()
else:
stack.append(token)
return '/' + '/'.join(stack)``````
Scroll to Top