[Leetcode]@python 76. Minimum Window Substring
2016-01-26 13:24
701 查看
题目链接
https://leetcode.com/problems/minimum-window-substring/题目原文
Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n).For example,
S =
"ADOBECODEBANC"
T =
"ABC"
Minimum window is
"BANC".
题目大意
给定字符串s和t,要在s中找到一个最小的窗口,其中出现了所有t中的字符解题思路
t中的字符可能为重复字符,需要先用字典记录每次字符出现的次数;要判断窗口中是否出现了所有字符,首先需要两个指针表示窗口的位置,尾指针不断往后扫,当扫到有一个窗口包含了所有T的字符,然后再收缩头指针,直到不能再收缩为止。最后记录所有可能的情况中窗口最小的。代码
class Solution(object): def minWindow(self, s, t): """ :type s: str :type t: str :rtype: str """ count1 = {} count2 = {} for char in t: if char not in count1: count1[char] = 1 count2[char] = 1 else: count1[char] += 1 count2[char] += 1 count = len(t) start = 0 minSize = len(s) + 1 minStart = 0 for end in range(len(s)): if s[end] in count2 and count2[s[end]] > 0: count1[s[end]] -= 1 if count1[s[end]] >= 0: count -= 1 if count == 0: while True: if s[start] in count2 and count2[s[start]] > 0: if count1[s[start]] < 0: count1[s[start]] += 1 else: break start += 1 if minSize > end - start + 1: minSize = end - start + 1 minStart = start if minSize < len(s) + 1: return s[minStart:minStart + minSize] else: return ''
相关文章推荐
- xgboost python windows编译问题
- 用python批量下载图片
- Educational Codeforces Round 4 A题 (python进行字符串的划分)
- 基于Python的Grib数据可视化
- Python 爬虫入门(二)—— IP代理使用 - 不剃头的一休哥 - 博客园
- Python【基础第二篇】
- Python3入门基础语法总结
- python 多线程就这么简单(续)
- python 多线程就这么简单
- Python生成器表达式
- python中的编码知识整理汇总
- Python导入第三方模块后eclipse提示unresolved import
- python模块系列之 - re
- python quick start
- Python openpyxl Read
- Python列表解析
- Python RawSocket Syn
- 我开始学python了(4)
- python 调试 pdb
- Python 并行任务技巧