Skip to content

Commit b023ea9

Browse files
committed
20210107
1 parent 71978d1 commit b023ea9

File tree

1 file changed

+95
-0
lines changed

1 file changed

+95
-0
lines changed

LeetCode/all/71.简化路径.go

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
/*
2+
* @lc app=leetcode.cn id=71 lang=golang
3+
*
4+
* [71] 简化路径
5+
*
6+
* https://leetcode-cn.com/problems/simplify-path/description/
7+
*
8+
* algorithms
9+
* Medium (42.22%)
10+
* Likes: 425
11+
* Dislikes: 0
12+
* Total Accepted: 125.5K
13+
* Total Submissions: 284.8K
14+
* Testcase Example: '"/home/"'
15+
*
16+
* 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。
17+
*
18+
* 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..)
19+
* 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,'//')都被视为单个斜杠 '/' 。
20+
* 对于此问题,任何其他格式的点(例如,'...')均被视为文件/目录名称。
21+
*
22+
* 请注意,返回的 规范路径 必须遵循下述格式:
23+
*
24+
*
25+
* 始终以斜杠 '/' 开头。
26+
* 两个目录名之间必须只有一个斜杠 '/' 。
27+
* 最后一个目录名(如果存在)不能 以 '/' 结尾。
28+
* 此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 '.' 或 '..')。
29+
*
30+
*
31+
* 返回简化后得到的 规范路径 。
32+
*
33+
*
34+
*
35+
* 示例 1:
36+
*
37+
*
38+
* 输入:path = "/home/"
39+
* 输出:"/home"
40+
* 解释:注意,最后一个目录名后面没有斜杠。
41+
*
42+
* 示例 2:
43+
*
44+
*
45+
* 输入:path = "/../"
46+
* 输出:"/"
47+
* 解释:从根目录向上一级是不可行的,因为根目录是你可以到达的最高级。
48+
*
49+
*
50+
* 示例 3:
51+
*
52+
*
53+
* 输入:path = "/home//foo/"
54+
* 输出:"/home/foo"
55+
* 解释:在规范路径中,多个连续斜杠需要用一个斜杠替换。
56+
*
57+
*
58+
* 示例 4:
59+
*
60+
*
61+
* 输入:path = "/a/./b/../../c/"
62+
* 输出:"/c"
63+
*
64+
*
65+
*
66+
*
67+
* 提示:
68+
*
69+
*
70+
* 1
71+
* path 由英文字母,数字,'.','/' 或 '_' 组成。
72+
* path 是一个有效的 Unix 风格绝对路径。
73+
*
74+
*
75+
*/
76+
77+
// @lc code=start
78+
func simplifyPath(path string) string {
79+
var stack []string
80+
for _,v := range strings.Split(path,"/"){
81+
if v == "" || v == "."{
82+
continue
83+
}
84+
if v == ".."{
85+
if len(stack) > 0{
86+
stack = stack[:len(stack)-1]
87+
}
88+
}else{
89+
stack = append(stack,v)
90+
}
91+
}
92+
return "/" + strings.Join(stack,"/")
93+
}
94+
// @lc code=end
95+

0 commit comments

Comments
 (0)