golang力扣leetcode 567.字符串的排列

简介: golang力扣leetcode 567.字符串的排列

567.字符串的排列

567.字符串的排列

题解

问s2 是否包含 s1 的排列,那只有当窗口长度等于s1长度,并且字符全有的时候才包含

代码

package main
func checkInclusion(s1 string, s2 string) bool {
  wind := make(map[byte]int)
  need := make(map[byte]int)
  for i := range s1 {
    need[s1[i]]++
  }
  left, right, match := 0, 0, 0
  for right < len(s2) {
    c := s2[right]
    right++
    if need[c] != 0 {
      wind[c]++
      if wind[c] == need[c] {
        match++
      }
    }
    for right-left == len(s1) {
      if match == len(need) {
        return true
      }
      c = s2[left]
      left++
      if need[c] != 0 {
        if wind[c] == need[c] {
          match--
        }
        wind[c]--
      }
    }
  }
  return false
}
目录
相关文章
|
9天前
|
算法
力扣每日一题 6/23 字符串/模拟
力扣每日一题 6/23 字符串/模拟
5 1
|
9天前
力扣经典150题第四十题:同构字符串
力扣经典150题第四十题:同构字符串
6 1
|
4天前
2670.找出不同元素数目差数组-力扣(LeetCode)
2670.找出不同元素数目差数组-力扣(LeetCode)
5 0
|
4天前
|
索引
821.字符的最短距离-力扣(LeetCode)
821.字符的最短距离-力扣(LeetCode)
7 0
|
8天前
|
索引
力扣每日一题 6/27 字符串 贪心
力扣每日一题 6/27 字符串 贪心
5 0
|
8天前
|
Python
力扣随机一题 模拟+字符串
力扣随机一题 模拟+字符串
6 0
|
9天前
力扣每日一题 6/22 字符串/贪心
力扣每日一题 6/22 字符串/贪心
4 0
|
9天前
力扣每日一题 6/18 字符串/模拟
力扣每日一题 6/18 字符串/模拟
6 0
|
8天前
|
算法
力扣每日一题 6/16 字符串 + 随机一题 动态规划/数学
力扣每日一题 6/16 字符串 + 随机一题 动态规划/数学
7 0
|
9天前
|
算法 Java
力扣经典150题第二十三题:找出字符串中第一个匹配项的下标
力扣经典150题第二十三题:找出字符串中第一个匹配项的下标
4 0