zoukankan      html  css  js  c++  java
  • leetcode 76. Minimum Window Substring

    用unordered_map存储t中的字符和存储的次数,l是字符串最左边的字符的位置,r是字符串最右边字符的位置,count是s中从l到r这一区间成功匹配t中字符个数。当count的个数跟t的大小一样大(也就是成功匹配),就将当前子串的size和min_size比较以更新min_size,会出现一种情况,l位置的字符并不在t中,这样可以继续移动l以求得真正的min_size

    class Solution {
    public:
        string minWindow(string s, string t) {
            int length1 = s.size();
            int length2 = t.size();
            if(length1 <= 0 || length2 <= 0)
                return "";
            unordered_map<char,int> container;
            for(int i = 0;i < length2;i++)
                container[t[i]]++;
            int l = 0,count = 0,min_l = 0,min_size = s.size() + 1;
            for(int r = 0;r < length1;r++){
                if(container.find(s[r]) != container.end()){
                    if(--container[s[r]] >= 0)
                        count++;
                    while(count == t.size()){
                        int size = r - l + 1;
                        if(size < min_size){
                            min_l = l;
                            min_size = size;
                        }
                        if(container.find(s[l]) != container.end()){
                            if(++container[s[l]] > 0)
                                count--; 
                        }
                        l++;
                    }
                }
            }
            if(min_size > s.size())
                 return "";
            return s.substr(min_l, min_size);      
        }
    };

     https://blog.csdn.net/makuiyu/article/details/44570193

  • 相关阅读:
    Java并发包线程池之ThreadPoolExecutor
    Java并发包之线程池概述
    Java同步数据结构之ConcurrentHashMap
    new 操作符
    javascript-类型转换
    javascript-引用类型
    JS-数组与伪数组
    SVG-JS操作
    SVG-变换
    SVG-标签
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/9788379.html
Copyright © 2011-2022 走看看