Files
obsidian/АиСД/Задачи/LeetCode/Simplify Path.md
T
roma-dxunvrs c90a404c40
deploy / Pull and Restart (push) Successful in 18s
Refactor
2026-09-19 19:20:43 +03:00

20 lines
841 B
Markdown

Leetcode #71 | #Medium | [[Стек]]
## Идея
Стек. Сплитим строку по "/", затем идем по токенам, если пустота или точка - ничего, если две точки - поднимаемся по стеку, иначе - просто кладем в стек. В конце ```return "/" + String.join("/", stack.reversed());```
## Big-O
- Время ```O(N)```
- Память ```O(N)```
## Код
```Java
class Solution {
public String simplifyPath(String path) {
Deque<String> st = new ArrayDeque<>();
for (String p : path.split("/")) {
if (p.equals("") || p.equals(".")) continue;
if (p.equals("..")) { if (!st.isEmpty()) st.pollLast(); }
else st.addLast(p);
}
return "/" + String.join("/", st);
}
}
```