কম্পিউটার টিউটোরিয়াল

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


দেওয়া কাজ হচ্ছে একটি বাইনারি স্ট্রিং-এ থেকে একটি সাব-স্ট্রিং বের করা এবং তারপর শূন্য এবং একের সংখ্যার ম্যাক্সিমাম পার্থক্য বের করা।

উদাহরণ দিয়ে বুঝি −

ইনপুট

str = "10010110"

আউটপুট

2

ব্যাখ্যা

পজিশন ১ থেকে ৪-এ সাব-অ্যারে ("0010")-এ, শূন্য এবং একের পার্থক্য = ৩ - ১ = ২ যা সর্বোচ্চ পাওয়া যায়।

ইনপুট

str = "00000"

আউটপুট

5

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

  • main() ফাংশনে একটি স্ট্রিং str তৈরি করা হয় বাইনারি স্ট্রিং সংরক্ষণের জন্য। এছাড়া একটি অ্যারে int arr[str.length()+1] ডিক্লেয়ার।

  • arr[]-এর সব এলিমেন্ট ০ সেট করা হয় memset(arr,0,sizeof(arr)); দিয়ে।

  • j = 1 থেকে j<= str.length() পর্যন্ত লুপ।

  • চেক করা হয় if(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++-এ Maximum Difference Between Node and Ancestor

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

  3. C++ স্ট্রিং কনস্ট্যান্ট এবং ক্যারেক্টার কনস্ট্যান্টের পার্থক্য

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