Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // MARK: - 567 Permutation in String
- // Содержится ли в строке перестановка другой строки
- func checkInclusion(_ s1: String, _ s2: String) -> Bool {
- if s1.count > s2.count {return false}
- let s1: [Character] = Array(s1)
- let s2: [Character] = Array(s2)
- var dictS1 = [Character:Int]()
- var dictS2 = [Character:Int]()
- // проходимся по маленькой
- for i in 0..<s1.count {
- dictS1[s1[i], default: 0] += 1
- dictS2[s2[i], default: 0] += 1
- }
- // Скользящее окно начнется со следующего элемента
- var l = 0
- var r = s1.count
- while r < s2.count {
- if dictS1 == dictS2 {
- return true
- }
- // Во втором массиве
- dictS2[s2[r], default: 0] += 1
- dictS2[s2[l]]! -= 1
- if dictS2[s2[l]] == 0 {
- dictS2[s2[l]] = nil
- }
- r += 1
- l += 1
- }
- // Не забывай про последнюю итерацию!!!
- return dictS1 == dictS2
- }
- checkInclusion("adc", "dcda")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement