Advertisement
Josif_tepe

Untitled

Feb 12th, 2023
809
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     string minWindow(string s, string t) {
  4.         map<char, int> m_t, exist;
  5.        
  6.         for(int i = 0; i < (int) t.size(); i++) {
  7.             m_t[t[i]]++;
  8.             exist[t[i]] = 1;
  9.         }
  10.         int req = (int) m_t.size();
  11.        
  12.         int j = 0;
  13.         int min_length = 2e9, idx1 = 0, idx2 = 0;
  14.         for(int i = 0; i < (int) s.size(); i++) {
  15.             while(req > 0 and j < (int) s.size()) {
  16.                 if(exist[s[j]] == 1) {
  17.                     m_t[s[j]]--;
  18.                     if(m_t[s[j]] == 0) {
  19.                         req--;
  20.                     }
  21.                 }
  22.                
  23.                
  24.                 j++;
  25.             }
  26.            
  27.             if(req == 0) {
  28.                 if(min_length > j - i) {
  29.                     min_length = j - i ;
  30.                     idx1 = i;
  31.                     idx2 = j;
  32.                 }
  33.             }
  34.             if(exist[s[i]]) {
  35.                 m_t[s[i]]++;
  36.                 if(m_t[s[i]] > 0) {
  37.                     req++;
  38.                 }
  39.             }
  40.            
  41.            
  42.         }
  43.         if(min_length == 2e9) {
  44.             return "";
  45.         }
  46.         string ret = "";
  47.         for(int i = idx1; i < idx2; i++) {
  48.             ret += s[i];
  49.         }
  50.        
  51.         return ret;
  52.        
  53.     }
  54. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement