public class Solution {
public static string SimplifyPath(string path) {
var stack = new List<string>();
string[] parts = path.Split('/');
foreach (string name in parts) {
if (name == "." || string.IsNullOrEmpty(name)) {
continue;
} else if (name == "..") {
if (stack.Count > 0) {
stack.RemoveAt(stack.Count - 1);
}
} else {
stack.Add(name);
}
}
return "/" + string.Join("/", stack);
}
}
#include <iostream>
using namespace std;
string simplifyPath(string path) {
vector<string> stack;
stringstream ss(path);
string name;
while (getline(ss, name, '/')) {
if (name == "." || name.empty()) {
continue;
} else if (name == "..") {
if (!stack.empty()) {
stack.pop_back();
}
} else {
stack.push_back(name);
}
}
string result;
for (const string& part : stack) {
result += "/" + part;
}
return result.empty() ? "/" : result;
}
package main
import (
"strings"
)
func simplifyPath(path string) string {
stack := []string{}
parts := strings.Split(path, "/")
for _, name := range parts {
if name == "." || name == "" {
continue
} else if name == ".." {
if len(stack) > 0 {
stack = stack[:len(stack)-1]
}
} else {
stack = append(stack, name)
}
}
return "/" + strings.Join(stack, "/")
}
import java.util.*;
class Solution {
public String simplifyPath(String path) {
Deque<String> stack = new ArrayDeque<>();
String[] parts = path.split("/");
for (String name : parts) {
if (name.equals(".") || name.isEmpty()) {
continue;
} else if (name.equals("..")) {
if (!stack.isEmpty()) {
stack.pop();
}
} else {
stack.push(name);
}
}
StringBuilder result = new StringBuilder();
while (!stack.isEmpty()) {
result.insert(0, "/" + stack.pop());
}
return result.length() == 0 ? "/" : result.toString();
}
}
import java.util.*;
class Solution {
public String simplifyPath(String path) {
Deque<String> stack = new ArrayDeque<>();
String[] parts = path.split("/");
for (String name : parts) {
if (name.equals(".") || name.isEmpty()) {
continue;
} else if (name.equals("..")) {
if (!stack.isEmpty()) {
stack.pop();
}
} else {
stack.push(name);
}
}
StringBuilder result = new StringBuilder();
while (!stack.isEmpty()) {
result.insert(0, "/" + stack.pop());
}
return result.length() == 0 ? "/" : result.toString();
}
}
def simplify_path(path: str) -> str:
stack = []
for name in path.split("/"):
if name == "." or name == "":
continue
elif name == "..":
if stack:
stack.pop()
else:
stack.append(name)
return "/" + "/".join(stack)