Advertisement
Alexxik

Untitled

Sep 14th, 2023 (edited)
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.31 KB | None | 0 0
  1. // MARK: - 71. Simplify Path
  2.  
  3. // Решение
  4. // Из-за того что у нас есть "..", который выкидывает в прошлую дирректорию, нужно использовать стек
  5. // .. - будет выкидывать последний добавленный элемент в стеке
  6.  
  7. // Идем по буквам собираем строку и если встречается "/", смотрим на строку и думаем что с ней делать
  8.  
  9. func simplifyPath(_ path: String) -> String {
  10.     var stack = [String]()
  11.    
  12.     // текущий файл или набор символов, который мы собираем
  13.     var cur = ""
  14.    
  15.     // Добавляем в конец /, чтобы обработать последнюю заполенненую строку
  16.     for char in path + "/" {
  17.         if char == "/" {
  18.             if cur == ".." {
  19.                 if !stack.isEmpty {
  20.                     stack.popLast()
  21.                 }
  22.             } else if cur != "" && cur != "." {
  23.                 stack.append(cur)
  24.             }
  25.             cur = ""
  26.         } else {
  27.             cur += String(char)
  28.         }
  29.     }
  30.     return "/" + stack.joined(separator: "/")
  31. }
  32.  
  33. let path = "/../abe//./def/"
  34. simplifyPath(path)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement