Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में अधिकतम K विशिष्ट वर्णों के साथ सबसे लंबा सबस्ट्रिंग


मान लीजिए कि हमारे पास एक स्ट्रिंग है; हमें सबसे लंबे सबस्ट्रिंग T की लंबाई की गणना करनी होगी जिसमें अधिकतम k अलग-अलग वर्ण हों।

इसलिए, यदि इनपुट s ="eceba", k =2 जैसा है, तो आउटपुट 3 होगा क्योंकि T "ece" है जिसकी लंबाई 3 है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • उत्तर :=0

  • एक नक्शा परिभाषित करें मी

  • n :=s का आकार

  • एक्स:=0

  • इनिशियलाइज़ j :=0, i :=0 के लिए, जब j

    • (m[s[j]] 1 से बढ़ाएं)

    • अगर m[s[j]] 1 के समान है, तो -

      • (x 1 से बढ़ाएँ)

    • जबकि (x> k और i <=j), करते हैं -

      • (मी [s[i]] 1 से घटाएं)

      • अगर m[s[i]] 0 के समान है, तो -

        • (x 1 से घटाएं)

      • (i 1 से बढ़ाएँ)

    • उत्तर :=अधिकतम उत्तर और (j - i + 1)

  • वापसी उत्तर

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int lengthOfLongestSubstringKDistinct(string s, int k) {
      int ans = 0;
      unordered_map<char, int> m;
      int n = s.size();
      int x = 0;
      for (int j = 0, i = 0; j < n; j++) {
         m[s[j]]++;
         if (m[s[j]] == 1)
            x++;
         while (x > k && i <= j) {
            m[s[i]]--;
            if (m[s[i]] == 0)
               x--;
            i++;
         }
         ans = max(ans, j - i + 1);
      }
      return ans;
   }
};
main() {
   Solution ob;
   cout << (ob.lengthOfLongestSubstringKDistinct("eceba", 2));
}

इनपुट

"eceba", 2

आउटपुट

3

  1. C++ में सबसे अधिक पानी वाला कंटेनर

    हमें कंटेनर की दीवारों की ऊंचाई की एक सरणी दी गई है। लक्ष्य उस कंटेनर को ढूंढना है जिसमें पानी की अधिकतम मात्रा हो सकती है। चूंकि दीवारों की ऊंचाई एक सरणी के तत्व हैं, उनके बीच की दूरी को दो दीवारों के बीच की चौड़ाई के रूप में माना जाता है। उदाहरण के लिए, Arr[i] और Arr[j] की दीवारों के बीच j-i चौड़ा

  1. सबस्ट्रिंग को दूसरे सबस्ट्रिंग से बदलें C++

    यहां हम देखेंगे कि सबस्ट्रिंग को दूसरे सबस्ट्रिंग से कैसे बदला जाए। यह स्ट्रिंग के उस हिस्से को बदल देता है जो कैरेक्टर पॉज़ से शुरू होता है और लेन कैरेक्टर तक फैला होता है। बदलें फ़ंक्शन की संरचना नीचे की तरह है: string& replace (size_t pos, size_t len, const 

  1. सबसे लंबे सबस्ट्रिंग की लंबाई खोजने के लिए कार्यक्रम जिसमें पायथन में k विशिष्ट वर्ण शामिल हैं

    मान लीजिए कि हमारे पास एक संख्या k और एक अन्य स्ट्रिंग s है, तो हमें सबसे लंबे सबस्ट्रिंग का आकार खोजना होगा जिसमें अधिकतम k भिन्न वर्ण हों। इसलिए, यदि इनपुट k =3 s =कोलकाता जैसा है, तो आउटपुट 4 होगा, क्योंकि 3 अलग-अलग वर्णों वाले दो सबसे लंबे सबस्ट्रिंग हैं, ये कोल्क और काटा हैं, जिनकी लंबाई 4 है।