কম্পিউটার

C++ এ এমনকি সংখ্যায় স্বর ধারণ করে দীর্ঘতম সাবস্ট্রিং খুঁজুন


ধরুন আমাদের স্ট্রিং s আছে, আমাদের প্রতিটি স্বরবর্ণ সমন্বিত দীর্ঘতম সাবস্ট্রিংয়ের আকার খুঁজে বের করতে হবে। অর্থাৎ, 'a', 'e', ​​'i', 'o', এবং 'u' কে জোড় সংখ্যায় দেখাতে হবে। সুতরাং স্ট্রিং যদি "হ্যালোওয়ার্ল্ড" এর মত হয়, তাহলে আউটপুট হবে 8।

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

  • ret :=0, m এবং cnt দুটি মানচিত্র সংজ্ঞায়িত করুন, m[“00000”] সেট করুন :=-1

  • স্বরধ্বনিকে স্বরবর্ণ অ্যারেতে সংরক্ষণ করুন

  • i এর জন্য 0 থেকে s আকারের সীমার মধ্যে

    • x :=s[i], এবং ঠিক আছে :=মিথ্যা

    • cnt[x] 1 দ্বারা বাড়ান, temp সেট করুন :=খালি স্ট্রিং

    • 0 থেকে 4 পরিসরে k-এর জন্য:temp :=temp + ‘0’ + cnt[vowels[k]] mod 2

    • যদি m এর temp থাকে, তাহলে ret :=ret এর সর্বোচ্চ এবং i – m[temp], অন্যথায় m[temp] :=i

  • রিটার্ন রিটার্ন

উদাহরণ (C++)

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int findTheLongestSubstring(string s) {
      int ret = 0;
      map <string, int> m;
      map <char, int> cnt;
      m["00000"] = -1;
      char vowels[5] = {'a', 'e', 'i', 'o', 'u'};
      for(int i = 0; i < s.size(); i++){
         char x = s[i];
         bool ok = false;
         cnt[x]++;
         string temp = "";
         for(int k = 0; k < 5; k++){
            temp+= ('0' + (cnt[vowels[k]] % 2));
         }
         if(m.count(temp)){
            ret = max(ret, i - m[temp]);
         }
         else{
            m[temp] = i;
         }
      }
      return ret;
   }
};
main(){
   Solution ob;
   cout << (ob.findTheLongestSubstring("helloworld"));
}

ইনপুট

“helloworld”

আউটপুট

8

  1. C++ প্রোগ্রাম যা খালি নয় এমন সাবস্ট্রিং এর দৈর্ঘ্য খুঁজে বের করে যার যোগফল সমান

  2. C++ এ একটি স্ট্রিং থেকে প্রথম সর্বোচ্চ দৈর্ঘ্যের জোড় শব্দ খুঁজুন

  3. C++ ব্যবহার করে সংখ্যার জোড় সমষ্টি সহ সংখ্যা খুঁজুন

  4. C++ ব্যবহার করে Nth Even Length Palindrome খুঁজুন