Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- func minWindow(_ s: String, _ t: String) -> String {
- var map = [Character : Int]() //t's char and count
- var diff = t.count
- var left = 0
- var right = 0
- // var res = ""
- var len = Int.max
- var start = 0
- let sArr = Array(s)
- for char in t {
- map[char, default: 0 ] += 1 // count
- }
- while right < sArr.count {
- let char = sArr[right]
- if let count = map[char] { //t has this char
- if count > 0 { //this is useful to diff
- diff -= 1
- }
- map[char] = count - 1
- }
- if diff == 0 { // found an ans
- while left <= right{
- if let count = map[sArr[left]] {
- if count == 0 {
- if right - left + 1 < len{
- len = right - left + 1
- start = left
- }
- map[sArr[left]] = count + 1
- left += 1
- diff += 1
- break
- }
- map[sArr[left]] = count + 1
- }
- left += 1
- }
- }
- right += 1
- }
- if len == Int.max { return "" }
- // print(start)
- // print(len)
- return String(sArr[start ..< start + len])
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement