Skip to main content

简化路径算法

python

def simplifyPath(path: str) -> str:
stack: list[str] = []

for name in path.split("/"):
if name in ("", "."):
continue
if name == "..":
if stack:
stack.pop()
continue
stack.append(name)

return "/" + "/".join(stack)

js

function simplifyPath(path) {
const stack = [];

for (const name of path.split("/")) {
if (name === "" || name === ".") {
continue;
}
if (name === "..") {
if (stack.length > 0) {
stack.pop();
}
continue;
}
stack.push(name);
}

return "/" + stack.join("/");
}

go

import "strings"

func simplifyPath(path string) string {
stack := make([]string, 0)

for _, name := range strings.Split(path, "/") {
if name == "" || name == "." {
continue
}
if name == ".." {
if len(stack) > 0 {
stack = stack[:len(stack)-1]
}
continue
}
stack = append(stack, name)
}

return "/" + strings.Join(stack, "/")
}