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

C++-এ N বাইনারি স্ট্রিং-এর বিটওয়াইজ OR


এই সমস্যাতে, আমাদের n আকারের একটি bin[] অ্যারে দেওয়া আছে যা বাইনারি স্ট্রিং ধারণ করে। আমাদের কাজ হলো n বাইনারি স্ট্রিং-এর বিটওয়াইজ OR (|) বের করার প্রোগ্রাম লিখা।

এখানে, আমরা সব নম্বর নেব এবং তাদের বিটওয়াইজ OR করব অর্থাৎ bin[0] | bin[1] |... bin[n-2] | bin[n]

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

ইনপুট −

bin[] = {"1001", "11001", "010101"}

আউটপুট −

011101

ব্যাখ্যা − সব বাইনারি স্ট্রিং-এর বিটওয়াইজ OR −

(1001) | (11001) | (010101) = 011101

এই সমস্যা সমাধানের জন্য, আমরা সবচেয়ে বড় বিট সংখ্যা যেকোনো স্ট্রিং-এ আছে (ম্যাক্স দৈর্ঘ্যের স্ট্রিং) তা বের করব। তারপর সব স্ট্রিং-এ পর্যাপ্ত সংখ্যক লিডিং ০ যোগ করব। তারপর বিটগুলোর বিটওয়াইজ OR করব।

এলগরিদমের ওয়ার্কিং দেখানোর উদাহরণ −

bin[] = {"1101", "011010" , "00111"}

ম্যাক্স দৈর্ঘ্যের স্ট্রিং হচ্ছে 011010 যার দৈর্ঘ্য ৬। তাই বাকি স্ট্রিং-গুলোর সামনে লিডিং ০ যোগ করব।

আপডেটেড স্ট্রিং − "001101", "011010", "000111"।

সব স্ট্রিং-এর বিটওয়াইজ OR বের করা − 001101 | 011010 | 000111 = 011111

উদাহরণ

আমাদের সমাধানের ওয়ার্কিং ইলাস্ট্রেট করার প্রোগ্রাম −

#include <bits/stdc++.h> 
using namespace std; 

string bitwiseOR(string* bin, int n){ 
    string result; 
    int max_size = INT_MIN; 
    for (int i = 0; i < n; i++) { 
        max_size = max(max_size, (int)bin[i].size()); 
        reverse(bin[i].begin(), bin[i].end()); 
    } 
    for (int i = 0; i < n; i++) { 
        string s; 
        for (int j = 0; j < max_size - bin[i].size(); j++) s += '0'; 
        bin[i] = bin[i] + s; 
    } 
    for (int i = 0; i < max_size; i++) { 
        int insertBit = 0; 
        for (int j = 0; j < n; j++) 
            insertBit = insertBit | (bin[j][i] - '0'); 
        result += (insertBit + '0'); 
    } 
    reverse(result.begin(), result.end()); 
    return result; 
} 

int main() { 
    string bin[] = { "1101", "011010", "00111" }; 
    int n = sizeof(bin) / sizeof(bin[0]); 
    cout<<"The bitwise OR of all the binary String of the string array is "<<bitwiseOR(bin, n); 
    return 0; 
}

আউটপুট

The bitwise OR of all the binary String of the string array is 011111

  1. কনক্যাটেনেটেড স্ট্রিং স্প্লিট করে লেক্সিকোগ্রাফিক্যালি সর্বোচ্চ স্ট্রিং C++-এ

  2. স্ট্রিং থেকে বাইনারি ট্রি নির্মাণ C++-এ

  3. C++-এ ন্যূনতম স্ট্রিং পরিবর্তন: ফ্রিকোয়েন্সি মিলান

  4. সি++-এ দুটি বাইনারি স্ট্রিং যোগ করার প্রোগ্রাম