Advertisement
Alexxik

Untitled

Sep 12th, 2023 (edited)
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 0.92 KB | None | 0 0
  1. // MARK: - Задача с собеса Матвея
  2. // Дана строка вида X0X0Y.
  3. // Найти минимальное расстояние между X и Y.
  4. // Y может быть, как левее X, так и правее. X и Y может и не быть в принципе
  5.  
  6. // X0X0Y
  7.  
  8. func findDistance(_ s: String) -> Int {
  9.     var s = Array(s)
  10.     var count: [Character:Int] = ["X":0, "Y":0]
  11.     var l = 0
  12.     var minDist = Int.max
  13.    
  14.     for r in 0..<s.count {
  15.         if s[r] != "0" {
  16.             count[s[r], default: 0] += 1
  17.         }
  18.        
  19.         if count["X"] == 2 || count["Y"] == 2 {
  20.             count[s[l]]! -= 1
  21.             l = r
  22.         }
  23.        
  24.         if count["X"] == 1 && count["Y"] == 1 {
  25.             minDist = min(minDist, r-l)
  26.             count[s[l]]! -= 1
  27.             l = r
  28.         }
  29.     }
  30.     return minDist == Int.max ? -1 : minDist
  31. }
  32.  
  33. findDistance("X0X0Y")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement