We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。
在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径
请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串。
输入:"/home/" 输出:"/home" 解释:注意,最后一个目录名后面没有斜杠。
输入:"/../" 输出:"/" 解释:从根目录向上一级是不可行的,因为根是你可以到达的最高级。
输入:"/home//foo/" 输出:"/home/foo" 解释:在规范路径中,多个连续斜杠需要用一个斜杠替换。
输入:"/a/./b/../../c/" 输出:"/c"
输入:"/a/../../b/../c//.//" 输出:"/c"
输入:"/a//b////c/d//././/.." 输出:"/a/b/c"
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/simplify-path
// 可以使用栈的概念来解答 // 可以先把字符串切割成切片s,然后再声明一个空的切片ret,遍历切片s,如果是 ".","" 直接跳过,如果是 ".." 并且切片ret不为空,则需要把切片ret的最后一个元素弹出。最后把切片ret转换为字符串即可 func simplifyPath(path string) string { s := strings.Split(path, "/") var ret []string for _, v := range s { if v == "." || v == "" { continue } if v == ".." { if len(ret) != 0 { ret = ret[:len(ret) - 1] } continue } ret = append(ret, string(v)) } return "/" + strings.Join(ret, "/") }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。
在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径
请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串。
示例 1:
示例 2:
示例 3:
示例 4:
示例 5:
示例 6:
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/simplify-path
The text was updated successfully, but these errors were encountered: