কম্পিউটার

বাইনারি স্ট্রিং-এ শূন্য এবং একের সর্বোচ্চ পার্থক্য - C++ এ (O(n) সময়)


প্রদত্ত কাজটি হল একটি প্রদত্ত বাইনারি স্ট্রিং থেকে একটি সাব-স্ট্রিং খুঁজে বের করা এবং তারপরে শূন্য এবং সংখ্যার মধ্যে সর্বাধিক পার্থক্য।

আসুন এখন বুঝতে পারি একটি উদাহরণ ব্যবহার করে আমাদের কী করতে হবে −

ইনপুট

str = “10010110”

আউটপুট

2

ব্যাখ্যা

পজিশন 1 থেকে 4 ("0010") পর্যন্ত সাব-অ্যারেতে, জিরোস্যান্ডের মধ্যে পার্থক্য =3 – 1 =2 যা সর্বাধিক পাওয়া যেতে পারে।

ইনপুট

str = “00000”

আউটপুট

5

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • main() ফাংশনে str একটি স্ট্রিং তৈরি করুন বাইনারি স্ট্রিং সংরক্ষণ করতে। এছাড়াও anarray int arr ঘোষণা করুন [str.length()+1];

  • memset(arr,0,sizeof(arr)) ব্যবহার করে arr[] =0 এর সমস্ত উপাদান সেট করুন;

  • j =1 থেকে j<=str.length()

    পর্যন্ত লুপ
  • চেক করুন যদি(memset(arr,0,sizeof(arr)), যদি তাই হয় তাহলে arr[j]=max(arr[j-1]-1,-1);

  • অন্যথায় arr[j]=max(arr[j-1]+1,1);

    রাখুন
  • লুপের বাইরে *max_element(arr+1,arr+str.length()+1);

    ব্যবহার করে সর্বাধিক সংখ্যা প্রিন্ট করুন

উদাহরণ

#include<bits/stdc++.h>
using namespace std;
int main(){
   string str = "10010110";
   int arr[str.length()+1];
   memset(arr,0,sizeof(arr));
   for(int j=1;j<=str.length();j++){
      if(str[j-1]=='1')
         arr[j]=max(arr[j-1]-1,-1);
      else
         arr[j]=max(arr[j-1]+1,1);
   }
   cout<<*max_element(arr+1,arr+str.length()+1);
   return 0;
}

আউটপুট

2

  1. C++ এ নোড এবং পূর্বপুরুষের মধ্যে সর্বোচ্চ পার্থক্য

  2. C/C++ এ strncmp() এবং strcmp() এর মধ্যে পার্থক্য

  3. C++ স্ট্রিং ধ্রুবক এবং অক্ষর ধ্রুবকের মধ্যে পার্থক্য

  4. C++ এ রিলেশনাল অপারেটর(==) এবং std::string::compare() এর মধ্যে পার্থক্য