71. Simplify Path

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
class Solution {
public String simplifyPath(String path) {
List<String> nameList = new ArrayList<>();

for (String token : path.split("/", -1)) {
if (token.isEmpty()) {
continue;
} else if (token.equals(".")) {
continue;
} else if (token.equals("..")) {
if (!nameList.isEmpty()) {
nameList.remove(nameList.size() - 1);
}
} else {
nameList.add(token);
}
}

if (nameList.isEmpty()) {
return "/";
}

StringBuilder sb = new StringBuilder();
for (String name : nameList) {
sb.append("/").append(name);
}
return sb.toString();
}
}

References

71. Simplify Path