Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // MARK: - 71. Simplify Path
- // Решение
- // Из-за того что у нас есть "..", который выкидывает в прошлую дирректорию, нужно использовать стек
- // .. - будет выкидывать последний добавленный элемент в стеке
- // Идем по буквам собираем строку и если встречается "/", смотрим на строку и думаем что с ней делать
- func simplifyPath(_ path: String) -> String {
- var stack = [String]()
- // текущий файл или набор символов, который мы собираем
- var cur = ""
- // Добавляем в конец /, чтобы обработать последнюю заполенненую строку
- for char in path + "/" {
- if char == "/" {
- if cur == ".." {
- if !stack.isEmpty {
- stack.popLast()
- }
- } else if cur != "" && cur != "." {
- stack.append(cur)
- }
- cur = ""
- } else {
- cur += String(char)
- }
- }
- return "/" + stack.joined(separator: "/")
- }
- let path = "/../abe//./def/"
- simplifyPath(path)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement