-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path0071. Simplify Path
46 lines (44 loc) · 1.46 KB
/
0071. 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class Solution {
// public String simplifyPath(String path) {
// ArrayList<String> arr = new ArrayList<>();
// Set<String> skip = new HashSet<>(Arrays.asList("..",".",""));
// // String[] all = path.split("/");
// for (String dir : path.split("/")) {
// if (dir.equals("..") && !arr.isEmpty()) arr.remove(arr.size() - 1);
// else if (!skip.contains(dir)) arr.add(dir);
// }
// StringBuilder sb = new StringBuilder("");
// for(String dir : arr)
// sb.append("/" + dir);
// return sb.length() == 0 ? "/" : sb.toString();
// }
public String simplifyPath(String path) {
List<String> arr= new ArrayList<>();
String[] all = path.split("/");
for (String s: all) {
if (s.equals("..")) {
if (!arr.isEmpty()) {
arr.remove(arr.size() - 1);
}
else {
continue;
}
}
else if (s.equals(".") || s.equals("")) {
continue;
}
else {
arr.add(s);
}
}
StringBuilder sb = new StringBuilder("/");
for (String s: arr) {
sb.append(s);
sb.append("/");
}
if (sb.length() >= 3) {
sb.deleteCharAt(sb.length() - 1);
}
return sb.toString();
}
}