博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
076 Minimum Window Substring 最小窗口子字符串
阅读量:5124 次
发布时间:2019-06-13

本文共 1928 字,大约阅读时间需要 6 分钟。

给定一个字符串 S 和一个字符串 T,找到 S 中的最小窗口,它将包含复杂度为 O(n) 的 T 中的所有字符。

示例:
S = "ADOBECODEBANC"
T = "ABC"
最小窗口是 "BANC".
注意事项:
如果 S 中没有覆盖 T 中所有字符的窗口,则返回空字符串 ""。
如果有多个这样的窗口,你将会被保证在 S 中总是只有一个唯一的最小窗口。
详见:https://leetcode.com/problems/minimum-window-substring/description/

Java实现:

class Solution {    public String minWindow(String s, String t) {        if (s == null || t == null || s.length() < t.length()){            return "";        }        // HashMap的key为t中各个字符,value为对应字符个数        Map
map = new HashMap
(); for (char c : t.toCharArray()) { if (!map.containsKey(c)){ map.put(c, 0); } map.put(c, map.get(c) + 1); } // minLeft为最小窗口左下标,minLen为最小长度,count用来计数 int minLeft = 0, minLen = s.length() + 1, count = 0; int left = 0; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (map.containsKey(c)) { // 如果map.get(c)说明t中还有字符没有包含,计数器+1 if (map.get(c) > 0){ count++; } map.put(c, map.get(c) - 1); } // 如果left到i中包含t中所有字符 while (count == t.length()) { if (i - left + 1 < minLen) { minLeft = left; minLen = i - left + 1; } c = s.charAt(left); if (map.containsKey(c)) { map.put(c, map.get(c) + 1); if (map.get(c) > 0){ count--; } } left++; } } if (minLen > s.length()){ return ""; } return s.substring(minLeft, minLeft + minLen); }}

参考:https://www.nowcoder.com/questionTerminal/c466d480d20c4c7c9d322d12ca7955ac 

详见:https://www.cnblogs.com/grandyang/p/4340948.html

转载于:https://www.cnblogs.com/xidian2014/p/8711232.html

你可能感兴趣的文章
Nhibernate 过长的字符串报错 dehydration property
查看>>
Deque - leetcode 【双端队列】
查看>>
ubuntu下sogou突然不能用
查看>>
Linux 普通用户拿到root权限及使用szrz命令上传下载文件
查看>>
联合体union
查看>>
人物角色群体攻击判定(一)
查看>>
JavaWeb学习过程 之c3p0的使用
查看>>
MySql Delimiter
查看>>
一步步学习微软InfoPath2010和SP2010--第九章节--使用SharePoint用户配置文件Web service(2)--在事件注册表单上创建表单加载规则...
查看>>
使用客户端对象模型读取SharePoint列表数据
查看>>
POJ 1328 Radar Installation 贪心
查看>>
gulp插件gulp-ruby-sass和livereload插件
查看>>
django的url控制系统
查看>>
poj 1753 Flip Game
查看>>
动态规划求一个序列的最长回文子序列(Longest Palindromic Substring )
查看>>
网站公共部分的复用
查看>>
mysql 常用命令(一)
查看>>
单元测试原来是这样的呼
查看>>
Flask第一篇——URL详解
查看>>
机器学习项目笔记
查看>>