Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // MARK: - Задача с собеса Матвея
- // Дана строка вида X0X0Y.
- // Найти минимальное расстояние между X и Y.
- // Y может быть, как левее X, так и правее. X и Y может и не быть в принципе
- // X0X0Y
- func findDistance(_ s: String) -> Int {
- var s = Array(s)
- var count: [Character:Int] = ["X":0, "Y":0]
- var l = 0
- var minDist = Int.max
- for r in 0..<s.count {
- if s[r] != "0" {
- count[s[r], default: 0] += 1
- }
- if count["X"] == 2 || count["Y"] == 2 {
- count[s[l]]! -= 1
- l = r
- }
- if count["X"] == 1 && count["Y"] == 1 {
- minDist = min(minDist, r-l)
- count[s[l]]! -= 1
- l = r
- }
- }
- return minDist == Int.max ? -1 : minDist
- }
- findDistance("X0X0Y")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement