golang力扣leetcode 76.最小覆盖子串

简介: golang力扣leetcode 76.最小覆盖子串

76.最小覆盖子串

76.最小覆盖子串

题解

滑动窗口模板题,不知道为啥这也能算hard题


  1. 右指针右移之后窗口数据更新
  2. 判断窗口是否要收缩
  3. 左指针右移之后窗口数据更新
  4. 根据题意计算结果


代码

package main
import "math"
func minWindow(s string, t string) string {
  wind := make(map[byte]int)
  need := make(map[byte]int)
  for i := range t {
    need[t[i]]++
  }
  left, right, match, start, end, min := 0, 0, 0, 0, 0, math.MaxInt32
  for right < len(s) {
    c := s[right]
    right++
    if need[c] != 0 {
      wind[c]++
      if wind[c] == need[c] {
        match++
      }
    }
    for match == len(need) {
      if right-left < min {
        min = right - left
        start = left
        end = right
      }
      c = s[left]
      left++
      if need[c] != 0 {
        //可能存在s-->aaaa  t-->a,
        //这里只有当s的最后一个a也被移出窗口的时候
        //匹配数才少了1
        if wind[c] == need[c] {
          match--
        }
        wind[c]--
      }
    }
  }
  if min == math.MaxInt32 {
    return ""
  }
  return s[start:end]
}


目录
打赏
0
0
0
0
9
分享
相关文章
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目
|
5月前
|
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
132 0
|
5月前
力扣(LeetCode)数据结构练习题(2)
力扣(LeetCode)数据结构练习题(2)
44 0
|
5月前
|
力扣(LeetCode)数据结构练习题
力扣(LeetCode)数据结构练习题
80 0
|
8月前
2670.找出不同元素数目差数组-力扣(LeetCode)
2670.找出不同元素数目差数组-力扣(LeetCode)
58 0
|
8月前
|
821.字符的最短距离-力扣(LeetCode)
821.字符的最短距离-力扣(LeetCode)
65 0
|
6月前
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
194 4
Golang语言之管道channel快速入门篇
|
6月前
|
Go
Golang语言文件操作快速入门篇
这篇文章是关于Go语言文件操作快速入门的教程,涵盖了文件的读取、写入、复制操作以及使用标准库中的ioutil、bufio、os等包进行文件操作的详细案例。
94 4
Golang语言文件操作快速入门篇
|
6月前
|
Go
Golang语言之gRPC程序设计示例
这篇文章是关于Golang语言使用gRPC进行程序设计的详细教程,涵盖了RPC协议的介绍、gRPC环境的搭建、Protocol Buffers的使用、gRPC服务的编写和通信示例。
163 3
Golang语言之gRPC程序设计示例
|
6月前
|
Golang语言goroutine协程并发安全及锁机制
这篇文章是关于Go语言中多协程操作同一数据问题、互斥锁Mutex和读写互斥锁RWMutex的详细介绍及使用案例,涵盖了如何使用这些同步原语来解决并发访问共享资源时的数据安全问题。
123 4
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等