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 ''    
            
            
  • 相关阅读:
    总结hashMap和hashtable
    Java抽象类
    JSP内置对象
    Java子父类间静态代码块、非静态代码块、构造方法的执行顺序
    struts1和struts2的区别
    Java Thread中,run方法和start方法的区别
    Java集合类: Set、List、Map
    输入一个整数n,输出契波那契数列的第n项
    numpy中的各种乘法总结
    矩阵按键的原理及代码实现
  • 原文地址:https://www.cnblogs.com/rosyYY/p/11044806.html
Copyright © 2011-2022 走看看