-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path71_javascript.js
57 lines (44 loc) · 1.67 KB
/
71_javascript.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// 以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。
// 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径
// 请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串。
//
// 示例 1:
// 输入:"/home/"
// 输出:"/home"
// 解释:注意,最后一个目录名后面没有斜杠。
// 示例 2:
// 输入:"/../"
// 输出:"/"
// 解释:从根目录向上一级是不可行的,因为根是你可以到达的最高级。
// 示例 3:
// 输入:"/home//foo/"
// 输出:"/home/foo"
// 解释:在规范路径中,多个连续斜杠需要用一个斜杠替换。
// 示例 4:
// 输入:"/a/./b/../../c/"
// 输出:"/c"
// 示例 5:
// 输入:"/a/../../b/../c//.//"
// 输出:"/c"
// 示例 6:
// 输入:"/a//b////c/d//././/.."
// 输出:"/a/b/c"
/**
* @param {string} path
* @return {string}
*/
var simplifyPath = function (path) {
let newPath = path.split("/");
let res = [];
for (let i = 0; i < newPath.length; i++) {
if (newPath[i] == "" || newPath[i] == "/" || newPath[i] == ".") {
continue;
}
if (newPath[i] == "..") {
res.pop();
continue;
}
res.push(newPath[i]);
}
return "/" + res.join("/");
};