首页 > 试题广场 >

最短包含字符串的长度

[编程题]最短包含字符串的长度
  • 热度指数:2142 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定字符串str1和str2,求str1的字串中含有str2所有字符的最小字符串长度。

输入描述:
输入包括两行,第一行一个字符串,代表str1,第二行也是一个字符串,代表str2


输出描述:
输出str1的字串中含有str2所有字符的最小字符串长度,如果不存在请输出0。
示例1

输入

abcde
ac

输出

3

说明

“abc”中包含“ac”,且“abc”是所有满足条件中最小的。
示例2

输入

12345
344

输出

0
def minWindow(s, t):
        """
        :type s: str
        :type t: str
        :rtype: str
        """
        need,window={},{}
        for i in t:
            need[i]=need.get(i,0)+1
        #定义窗口左右节点,初始化最小长度
        left,right = 0,0
        minlen = float('inf')
        #窗口包含t字符个数
        count=0
        while right<len(s):
            if need.get(s[right],0)==0:
                right+=1
                continue
            window[s[right]]=window.get(s[right],0)+1
            if window[s[right]]==need[s[right]]:
                count+=1
            right+=1
            #当窗口包含t所有的字符时,缩小窗口
            while count==len(t):
                if right-left<minlen:
                    minlen=right-left
                #缩小窗口
                if s[left] not in need:
                    left+=1
                    continue
                #出窗,不满足条件结束循环
                if window[s[left]]==need[s[left]]:
                    count-=1
                window[s[left]]-=1
                left+=1
        if minlen==float('inf'):
            return 0
        else:
            return minlen
        
s=input()
t=input()
print(minWindow(s,t))
链接:https://www.nowcoder.com/questionTerminal/58569ba19c05436e9eb492244b0902d8
来源:牛客网
您的代码已保存
答案错误:您提交的程序没有通过所有的测试用例
case通过率为28.57%
用例:
YVRYIaLMyKzhPVAgQTJblZITJUaEiZDCOkzYVolKDCSdEoVeDUCXWrZQwXaSJZLVmgxmUvJZVvHLAuutRaaDsqDDZoEtznxCxqjPVAENPOjRlhPjFdGxQCprzKeXnooqDrwZZjqnTltpDwiWmjORaeemItQhuMIbBzHLskjIHWJjbfTrKDAyoaOHjApMCQHVAabnVDoSwHDXfFHXcOmcrkrieCQWHicfMLNdcYuZBAyVXfQyCsYkiXgRdBMUsQCinrsfPFFsoHiKXZJjGWQnPguYsVRGMyxUQaynGBteHJyEJzAUEHwrMpzLDnZGpuxRmGabZuPvHcPmlanDExXYkKtEyIgvxStIXAvYKXirVMXvadOuykiFixuMKaHYTXmlPTdmWjcpNsaFMcxffALvAURprNhhGvskLTgDfIwERLZMcjgUPCFaUztICgQOklDHJuGovKsojDXqpAUkmfMETvXvKtPCkLCQHFmwpCiLBnkoXpVBfSYWVyVOHneOWvyzPthrWBDIxZIfKAOHvlwDNiLTVjrYqShfrSSeeTmERZimBxhvgEnVkQCcsKDYJRFUHwTQgMCdOYXZenwMhSLaGNIXLHDqYdZbQoKUpsyNJxRYTvJImDAHbfONprsWXsAjjfubPUxNERCiOjeVZIlzyChWIxUmEEOSyTvMKNecDOXrBljujPjQMDXbzPbRLLrwdAQBcohSdcUAcStQTgaIVRqOzLdXkqICbhlHOzvbFpnLwrIlaPsqxYnFqMBKvAgfCRCkDmGIfoOTlIycpesWnRSokRKZDjRdtmNHroeCHAvRcpqfvBZRYSRhZIoFSyJyBvCUhDMFGTWGotNkbTbAqfqsmdmuiWhrmyNvjcbRFuYrBbhrPYQuFRnWWLUSsJmisjVZtAjzQPYHrlDwWPXKunQHpeukzfWPIjqbHbbCAOKgRvsRuqxTiXauAdGLlaFqhtTSpnxEduGhbOmrLrugpZWNOnQFYPcXtBlSZofNNitvvdveMCzznYWyXkU

有部分用例未通过,实在查不出什么问题,麻烦大神帮忙看下
编辑于 2021-03-18 04:34:50 回复(0)