Advertisement
Josif_tepe

Untitled

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