কম্পিউটার

C++ এ সর্বাধিক K স্বতন্ত্র অক্ষর সহ দীর্ঘতম সাবস্ট্রিং


ধরুন আমাদের একটি স্ট্রিং আছে; আমাদের দীর্ঘতম সাবস্ট্রিং T-এর দৈর্ঘ্য গণনা করতে হবে যাতে সর্বাধিক k স্বতন্ত্র অক্ষর থাকে৷

সুতরাং, যদি ইনপুটটি s ="eceba", k =2 এর মত হয়, তাহলে আউটপুট হবে 3 যেহেতু T হল "ece" যার দৈর্ঘ্য 3।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • উত্তর :=0

  • একটি মানচিত্র m

    সংজ্ঞায়িত করুন
  • n :=s

    এর আকার
  • x :=0

  • আরম্ভ করার জন্য j :=0, i :=0, যখন j

    • (m[s[j]] 1 দ্বারা বৃদ্ধি করুন)

    • যদি m[s[j]] 1 এর সমান হয়, তাহলে −

      • (x 1 দ্বারা বাড়ান)

    • যখন (x> k এবং i <=j), −

      করুন
      • (m[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++-এ সর্বাধিক জল সহ ধারক

  2. C++-এ অক্ষরের পুনরাবৃত্তি সহ সমস্ত স্থানান্তর প্রিন্ট করুন

  3. সাবস্ট্রিংকে অন্য সাবস্ট্রিং C++ দিয়ে প্রতিস্থাপন করুন

  4. পাইথনে k স্বতন্ত্র অক্ষর ধারণ করে দীর্ঘতম সাবস্ট্রিংয়ের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম