76. Minimum Window Substring

来源:互联网 发布:阿里云飞天 编辑:程序博客网 时间:2024/06/07 04:51

1、题目描述

输入字符串S和T,在S中找到最短子串,使得它包含了T中的所有字符。


2、思路

哈希表+Two Pointers。

用一个map来记录每个字符出现的次数。

写一个函数allzero,判断map中所有字符出现的次数都不大于0.

每当S中有一个子串满足了条件,要尽力地往右移动左边界,使得它还是满足条件,从而找出最短的子串。

复杂度O(n).


3、代码

    string minWindow(string s, string t) {        int l1=s.size(),l2=t.size();        if(l1<l2) return "";        map<char,int>m;        for(int i=0;i<l2;i++){            m[t[i]]++;            m[s[i]]--;        }         if(allzero(m)) return s.substr(0,l2);        int ans = INT_MAX;        int left = 0;        int id = 0;        for(int i=l2;i<l1;i++){            m[s[i]]--;            while(allzero(m)){                if(ans>i-left+1){                    ans = i-left+1;                    id=left;                }                m[s[left]]++;                left++;            }        }        if(ans==INT_MAX) return "";        else return s.substr(id,ans);        }    bool allzero(map<char,int>m){        map<char,int>::iterator it = m.begin();        for(;it!=m.end();it++) {            if(it->second >0) return false;        }        return true;    }


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 云中歌txt 云中歌2 云中歌3 大汉情缘之云中歌有那些歌曲 云中歌1txt 大汉情缘 云中歌 大汉情缘之云中歌剧情介绍 大汉情缘之云中歌百合是谁 大汉情缘之云中歌哪个台播放 云中歌txt全集下载 云中歌 电视 大汉情缘之云中歌全集 魅宫十二夫 云中挽歌 云中歌 霍去病 大汉情缘之云中歌 下载 大汉情缘之云中歌主演 大汉情缘之 云中歌 云中歌剧情介绍 云中歌txt下载 云中歌剧照 云中歌剧情 大汉奇缘之云中歌 云中歌蒹葭试听 大汉情缘之云中歌主题曲 云中歌1 云中歌悲剧 云之歌 云中郡 云中鹤徐志摩 云中鹤虐修罗刀 我是云中鹤 贺方圣 云中鹤礼品公司 斗破之次元崩坏 云中擒仙鹤 弹性云服务器 云服务器怎么用 云服务器租用 云服务器免费一年 小鸟云服务器 免费云服务器申请 云电脑服务器 云服务器免费