forked from yuzhangcmu/LeetCode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSimplifyPath.java
More file actions
executable file
·49 lines (40 loc) · 1.33 KB
/
SimplifyPath.java
File metadata and controls
executable file
·49 lines (40 loc) · 1.33 KB
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
package Algorithms.string;
import java.util.Stack;
public class SimplifyPath {
public static void main(String[] strs) {
System.out.println(simplifyPath("//home"));
}
public static String simplifyPath(String path) {
if (path == null || path.length() == 0) {
return null;
}
/*
path = "/home/", => "/home" --> Split to : 空格 home
path = "/a/./b/../../c/", => "/c" --> splite to: 空格 a . b .. .. c
*/
// 注意 split的输入是一个字符串
String[] strs = path.split("/");
Stack<String> s = new Stack<String>();
for (String str: strs) {
if (str.equals("..")) {
// we should pop out a element.
if (!s.isEmpty()) {
s.pop();
}
// should skip the space and the '.'
} else if (!str.equals(".") && !str.equals("")) {
s.push(str);
}
}
StringBuilder sb = new StringBuilder();
while (!s.isEmpty()) {
sb.insert(0, s.pop());
sb.insert(0, '/');
}
// if we get a empty string, should return /
if (sb.length() ==0) {
sb.append('/');
}
return sb.toString();
}
}