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
![Simplify Path LeetCode Solution](https://i0.wp.com/totheinnovation.com/wp-content/uploads/2024/02/LeetCode-Problem-Solution.png?resize=200%2C200&ssl=1)
Simplify Path LeetCode Solution
Table of Contents
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)