zoukankan      html  css  js  c++  java
  • leetcode-hard-array-76. Minimum Window Substring -NO

    mycode

    不会。。

    参考:

    class Solution(object):
        def minWindow(self, s, t):
            """
            :type s: str
            :type t: str
            :rtype: str
            """
            count1 = collections.defaultdict(int)
            count2 = []
            for char in t:
                count1[char] += 1
                count2.append(char)
    
            count = len(t)
            start = 0
            minSize = len(s) + 1
            minStart = 0
    
            for end in range(len(s)):
                if s[end] in count2 :
                    #print(end,count1,count2,count)
                    count1[s[end]] -= 1
                    if count1[s[end]] >= 0:  #<=0时表示出现了多余的t中要求的元素,比如t中两个A,现在出现了第三个A,所以没必要count-1
                        count -= 1
                    if count == 0:
                        while True:                      
                            if s[start] in count2  :
                                if count1[s[start]] < 0:  #s中第一个出现t中元素的位置可以被更换啦
                                    count1[s[start]] += 1
                                else:  #
                                    print(start) 
                                    break
                            start += 1
                        if minSize > end - start + 1:
                            minSize = end - start + 1
                            minStart = start
                    #print(end,count1,count2,count)
                 
            if minSize < len(s) + 1:
                return s[minStart:minStart + minSize]
            else:
                return ''    
            
            class Solution(object):
        def minWindow(self, s, t):
            """
            :type s: str
            :type t: str
            :rtype: str
            """
            count1 = collections.defaultdict(int)
            count2 = []
            for char in t:
                count1[char] += 1
                count2.append(char)
    
            count = len(t)
            start = 0
            minSize = len(s) + 1
            minStart = 0
    
            for end in range(len(s)):
                if s[end] in count2 :
                    #print(end,count1,count2,count)
                    count1[s[end]] -= 1
                    if count1[s[end]] >= 0:
                        count -= 1
                    if count == 0:
                        while True:
                          
                            if s[start] in count2  :
                                if count1[s[start]] < 0:
                                    count1[s[start]] += 1
                                else:
                                    print(start)
                                    break
                            start += 1
                        if minSize > end - start + 1:
                            minSize = end - start + 1
                            minStart = start
                    #print(end,count1,count2,count)
                 
            if minSize < len(s) + 1:
                return s[minStart:minStart + minSize]
            else:
                return ''    
            
            
  • 相关阅读:
    内向者生存手册
    不良言论屏蔽方案探讨——附加一点思考
    提高复用性的编码习惯
    如何管好.net的内存
    谨防信息超载
    .net的反对派们,精神比表面的东西更重要
    为什么我老是半途而废?
    对不起,我也是来给.Net泼冷水的(山寨版)
    把重要的事情先做好
    学英语(外语)的一个误区
  • 原文地址:https://www.cnblogs.com/rosyYY/p/11044806.html
Copyright © 2011-2022 走看看