美文网首页
剑指 Offer II 015. 字符串中的所有变位词

剑指 Offer II 015. 字符串中的所有变位词

作者: 邦_ | 来源:发表于2022-04-15 15:18 被阅读0次

    滑动窗口。。
    首先。。p是s的子串的话 长度上 s要大于p
    注意 这里最好是声明两个常量来表示长度 频繁的获取count时间上会有消耗 特别是在下边的循环里
    然后 因为是小写字母 初始化两个长度是26的数组 和a的ascii值做差 对应的下标的值即为出现次数
    先根据p来初始化 p比较短不用考虑越界问题
    这样s对应的ascii的数组。就初始化了和p一样长度的
    然后 继续滑动s字符串。。 前一个字符移除掉

          array1[Int((temp1[i].asciiValue ?? 0) - (tempValue.asciiValue ?? 0))] -= 1
    

    后一个字符加进来

          array1[Int((temp1[i + n ].asciiValue ?? 0) - (tempValue.asciiValue ?? 0))] += 1
    

    然后和p对应的数组进行比较 相等的话 把对应下标的值加进去

    
    func findAnagrams(_ s: String, _ p: String) -> [Int] {
                let m = s.count
                let n = p.count
            
                if n > m {
                    
                    return []
                    
                }
                var array = Array<Int>()
                let tempValue : Character = "a"
                var array1 = Array<Int>(repeating: 0, count: 26)
                var array2 = Array<Int>(repeating: 0, count: 26)
                let temp1 = Array(s)
                let temp2 = Array(p)
                for i in 0..<temp2.count {
                  
                    array1[Int((temp1[i].asciiValue ?? 0) - (tempValue.asciiValue ?? 0))] += 1
                    array2[Int((temp2[i].asciiValue ?? 0) - (tempValue.asciiValue ?? 0))] += 1
                }
                if array1 == array2 {
                    array.append(0)
                }
                
                for i in 0..<(m - n) {
                    array1[Int((temp1[i].asciiValue ?? 0) - (tempValue.asciiValue ?? 0))] -= 1
                    array1[Int((temp1[i + n].asciiValue ?? 0) - (tempValue.asciiValue ?? 0))] += 1
                    if array2 == array1 {
                        array.append(i + 1)
                    }
                    
                }
             
                return array
    
            }
    
    
    
    
    
    
    

    相关文章

      网友评论

          本文标题:剑指 Offer II 015. 字符串中的所有变位词

          本文链接:https://www.haomeiwen.com/subject/bggysrtx.html