题目链接

【题解】

尺取法。
用l和r代表一个合法的覆盖子串。
我们不断地扩大右指针。
直到l..r包含T中的所有字母为止(重复的就要两次以上。)
然后我们可以尝试的让l++.
看看新的l..r是不是还是包含所有的字母。
如果是的话。
显然我们得到了一个更优的解。
而且可以肯定。
我们在递增l的时候
不会漏掉比当前更好的解。
因为如果l可以递增缺不递增。
那么从那个位置开始的最短的子串也只能到达r而已。
不会比l递增之后的结果更优。
因此这个算法是成立的。
判断是否包含所有的字母。
只要用个map来存储每个字母出现的次数就好了。(T字符串中的字母)
然后当r递增的时候。
令map[s[r]]--
如果让s[r]递减的时候第一次变成了0
就说明[l..r]这一段s[r]这个字母出现的次数已经满足了要求。

【代码】

class Solution {
public:
string minWindow(string s, string t) {
map<char,int> dic;dic.clear();
int goal = 0;
for (int i = 0;i<(int)t.size();i++) {
dic[t[i]]++;
if (dic[t[i]]==1) goal++;
}
int l = 0;int cnt = 0;
int ll = -1,rr=-1;
for (int r = 0;r<(int)s.size();r++){
dic[s[r]]--;
if (dic[s[r]]==0) cnt++;
if (cnt==goal){
while((l+1)<=r){
if (dic[s[l]]<0){
dic[s[l]]++;
}else break;
l++;
}
if (ll==-1){
ll = l,rr = r;
}else{
if (rr-ll+1>r-l+1){
ll = l;rr = r;
}
}
} }
string anss = "";
for (int i = ll;i<=rr;i++){
anss = anss + s[i];
}
return anss;
}
};

最新文章

  1. 《HeadFirst SQL》笔记
  2. 安装Java的IDE Eclipse时出现java.net.SocketException,出现错误Installer failed,show.log
  3. Python 爬虫2——环境配置
  4. java/python中的队列
  5. mysql 链接失败(ERROR 1045 (28000): Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES))
  6. spring-data-jpa 的@Query注解的使用
  7. Android系统架构说明介绍
  8. IE6 IE7 hasLayout bug之li间的3px垂直间距
  9. B - 娜娜梦游仙境系列——跳远女王
  10. AWS 之 S3篇&lt;.NET(c#)批量上传文件&gt;
  11. BZOJ 1697: [Usaco2007 Feb]Cow Sorting牛排序
  12. EmbossMaskFilter BlurMaskFilter 学习
  13. thinter中combobox下拉选择控件(九)
  14. Ubuntu 16.04 安装 Apache, MySQL, PHP7.2
  15. ElasticSearch 2 (9) - 在ElasticSearch之下(图解搜索的故事)
  16. 2018 How to register and install LAUNCH ICARSCAN software ?
  17. Don’t Put View Code Into Your View Controller别把View创建的代码放在VC中(swift)
  18. CRLF line terminators导致shell脚本报错:command not found --转载
  19. [UE4]Acotr
  20. 修改rabbitmq Web UI 监控页面的端口

热门文章

  1. spring-cloud zuul网关
  2. 如何获取url里面的参数
  3. 测开之路七十七:shell之if、case、for、while
  4. linux下的sleep()和usleep()的使用和区别
  5. BZOJ 4821 (luogu 3707)(全网最简洁的代码实现之一)
  6. U33405 纽约 (二分)
  7. 自己做的html5手机站点
  8. UIGestureRecognizer 手势
  9. 05.Linux-CentOS系统普通用户SSH远程问题
  10. 二、IDS4配置服务