首页 > 编程语言 >[Python手撕]最小覆盖子串

[Python手撕]最小覆盖子串

时间:2024-09-18 10:15:18浏览次数:9  
标签:子串 map right min Python res 最小 len left

class Solution:
    def minWindow(self, s: str, t: str) -> str:

        def judge(map_p, map_q):
            for key, value in map_q.items():
                if map_p.get(key, 0) < value:
                    return False
            return True

        n = len(s)
        m = len(t)

        map_t = {}
        for c in t:
            map_t[c] = map_t.get(c, 0) + 1

        map_s = {}

        min_len = float("inf")

        left = 0
        res_left = -1
        res_right = -1
        for right in range(n):
            map_s[s[right]] = map_s.get(s[right], 0) + 1
            while right - left + 1 >= m and judge(map_s, map_t):
                if right - left + 1 < min_len:
                    min_len = right - left + 1
                    res_left = left
                    res_right = right
                map_s[s[left]] = map_s.get(s[left], 0) - 1
                left += 1

        if min_len == float("inf"):
            return ""
        else:
            return s[res_left : res_right + 1]

标签:子串,map,right,min,Python,res,最小,len,left
From: https://www.cnblogs.com/DCFV/p/18417998

相关文章

  • 【python爬虫案例】利用python爬取豆瓣电影TOP250评分排行数据!
    一、爬取对象-豆瓣电影TOP250今天给大家分享一期豆瓣读书TOP排行榜250的python爬虫案例爬取的目标网址是:https://movie.douban.com/top250咱们以目标为驱动,以兴趣为导向,先来看下爬虫程序运行后得到的excel文档数据那代码是如何实现豆瓣电影TOP250数据爬取的了?下面逐一讲解一......
  • python 冒号(:)的使用
    Python是一种流行的编程语言,其中一个非常独特的语法特点是使用冒号(:)来表示代码块。这个冒号语法在Python中起到了类似于Java中分号的作用,用于定义一个可执行的代码块。在这个代码块中,可以使用冒号来定义变量、函数和类等元素。同时,冒号在Python中还具有另一种特殊的用法,即冒号等......
  • 五个python常用运维脚本
    一、用Python写一个列举当前目录以及所有子目录下的文件,并打印出绝对路径#!/usr/bin/env pythonimportosforroot,dirs,filesin os.walk('/tmp'):  fornameinfiles:    print(os.path.join(root,name))os.walk()原型为:os.walk(top,topdown=True,onerror=None......
  • windows定时执行python程序
    先写个bat脚本,执行Python程序::根据实际情况修改Python解释器的路径setPYTHON=D:\python\python.exesetCODE_DIR=D:\code\projectcd/d"%CODE_DIR%"::启动Python程序echoRunningmain.py...%PYTHON%main.py>nohup.log2>&1echoAllscriptscomplete......
  • OpenCV Python 深度指南
    OpenCV(OpenSourceComputerVisionLibrary)是一个开源的计算机视觉库,它包含了大量的图像处理和机器视觉算法。OpenCV支持多种编程语言,包括C++和Python,其中Python接口因其易用性和灵活性而受到广泛欢迎。本指南将覆盖以下几个方面:OpenCV简介OpenCV安装与配置图像基础视频......
  • Python OpenCV精讲系列 - 高级图像处理技术(七)
    ......
  • Python 进阶 03 网络编程
    网络编程概述网络编程,又称套接字编程(Socket编程),是实现不同计算机上运行的程序间进行数据交互的关键技术。它允许程序通过网络发送和接收数据,无论这些程序是运行在同一台机器上还是分布在不同地理位置的计算机上。网络编程是现代软件开发中不可或缺的一部分,广泛应用于Web开发、......
  • 基于python+Django的学生成绩管理系统(源码+vue+前后端分离)
    收藏关注不迷路!!......
  • 10_Python流程控制_循环
    循环循环是控制程序重复执行特定代码块的关键结构。Python提供了几种不同的循环结构,以满足不同的编程需求。While循环while循环会重复执行一个代码块,只要指定的条件为真。适用情况:不清楚具体的循环次数,或者当条件一直为真时一般用while。注意:条件中的变量在while迭代......
  • Python脚本生成可执行文件
    将python文件生产可执行文件,可以在其他不同的环境下使用,即使没有安装python的环境也可以使用,避免了python文件或脚本需要在安装了python的环境下才能使用,提高了便利性一.安装pyinstaller    将python脚本生成可执行文件,需要通过pyinstaller工具,需提前安装,安装方法为......