কম্পিউটার

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


ধরুন আমাদের একটি স্ট্রিং s আছে; আমাদের সবচেয়ে দীর্ঘতম সাবস্ট্রিং t এর দৈর্ঘ্য খুঁজে বের করতে হবে যাতে সর্বাধিক 2টি স্বতন্ত্র অক্ষর রয়েছে।

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

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

  • একটি ফাংশন lengthOfLongestSubstringKDistinct(), এর জন্য s, k,

    লাগবে
  • উত্তর :=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 দ্বারা বাড়ান)

    • ans :=সর্বাধিক উত্তর এবং j - i + 1

  • উত্তর ফেরত দিন

  • মূল পদ্ধতি থেকে নিম্নলিখিতগুলি করুন

  • ফেরত lengthOfLongestSubstringKDistinct(s, 2)

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

#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;
   }
   int lengthOfLongestSubstringTwoDistinct(string s){
      return lengthOfLongestSubstringKDistinct(s, 2);
   }
};
main(){
   Solution ob;
   cout << (ob.lengthOfLongestSubstringTwoDistinct("eceba"));
}

ইনপুট

"eceba"

আউটপুট

3

  1. C++-এ সর্বাধিক জল সহ ধারক

  2. একটি স্ট্রিংয়ের সমস্ত স্বতন্ত্র অক্ষর C++ ক্রমে প্রিন্ট করুন

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

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