forked from DengWangBao/Leetcode-Java
-
Notifications
You must be signed in to change notification settings - Fork 0
/
SimplifyPath.java
35 lines (33 loc) · 1.06 KB
/
SimplifyPath.java
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
import java.util.Deque;
import java.util.LinkedList;
public class SimplifyPath {
public String simplifyPath(String path) {
String[] ss = path.split("/");
/**
* 注意这里要用双端队列,因为后面要生成路径需要从前往后
*/
Deque<String> queue = new LinkedList<>();
for (String s : ss) {
/**
* 注意这里别掉了s为空的情况,比如"//"时s会为空
*/
if (s.length() == 0 || s.equals(".")) {
continue;
}
if (s.equals("..")) {
if (!queue.isEmpty()) {
/**
* 这里和下面都别用stack或者push,因为他们都是在头部操作而非尾部
*/
queue.pollLast();
}
} else {
queue.offerLast(s);
}
}
/**
* 这里要注意queue可能为空,不过好在join会返回空
*/
return "/" + String.join("/", queue);
}
}