কম্পিউটার

C++-এ K যুক্ত একটি বাইনারি স্ট্রিং-এর সাবস্ট্রিং-এর সংখ্যা


আমাদেরকে বাইনারি সংখ্যার একটি স্ট্রিং দেওয়া হয়েছে যেমন 0 এবং 1 এর সমন্বয় এবং একটি পূর্ণসংখ্যা মান k এবং কাজটি হল k 1 দেওয়া প্রদত্ত বাইনারি স্ট্রিং দিয়ে গঠিত সাবস্ট্রিংগুলির গণনা করা।

ইনপুট − স্ট্রিং str ='10000100000', k =2

আউটপুট − K যুক্ত একটি বাইনারি স্ট্রিং এর সাবস্ট্রিং এর সংখ্যা হল − 6

ব্যাখ্যা − প্রদত্ত স্ট্রিং থেকে যে সাবস্ট্রিংগুলি তৈরি করা যেতে পারে তা হল 1, 10, 100, 1000, 10000, 010, 100001, 10001, 1001, 101, 11, 1000010৷ তাই 6টি সাবস্ট্রিং রয়েছে যার i1 এর k একটি সংখ্যা রয়েছে৷

ইনপুট − স্ট্রিং str ='10000100000', k =3

আউটপুট − K যুক্ত একটি বাইনারি স্ট্রিং এর সাবস্ট্রিং এর সংখ্যা হল − 0

ব্যাখ্যা − আমাদের 3 হিসাবে k এর একটি পূর্ণসংখ্যার মান দেওয়া হয়েছে এবং যদি আমরা বাইনারি সংখ্যা ধারণকারী আমাদের স্ট্রিংটি পরীক্ষা করি তবে এতে শুধুমাত্র 2টি আছে। সুতরাং k নম্বর দিলে সাবস্ট্রিং হওয়ার কোনো সম্ভাবনা নেই।

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

  • বাইনারি সংখ্যার একটি স্ট্রিং ইনপুট করুন যেখানে 0 এবং 1 এর সমন্বয় এবং একটি পূর্ণসংখ্যা পরিবর্তনশীল k।

  • length() ফাংশন ব্যবহার করে স্ট্রিংয়ের দৈর্ঘ্য গণনা করুন এবং আরও প্রক্রিয়াকরণের জন্য ফাংশনে ডেটা পাস করুন।

  • একটি অস্থায়ী পরিবর্তনশীল গণনা ঘোষণা করুন এবং k এর সাথে সাবস্ট্রিংগুলি সংরক্ষণ করার জন্য মোট 0 হিসাবে ঘোষণা করুন৷

  • স্ট্রিং প্লাস ওয়ানের দৈর্ঘ্যের আকারের ফ্রিকোয়েন্সি সংরক্ষণ করতে একটি অ্যারে ঘোষণা করুন এবং এটি 0 দিয়ে শুরু করুন এবং অ্যারের প্রথম উপাদানটি 1 হিসাবে সেট করুন।

  • স্টার্ট লুপ ফর 0 থেকে একটি অ্যারের দৈর্ঘ্য পর্যন্ত

  • লুপের ভিতরে, total + str[i] - '0' হিসাবে সেট করুন। IF total>=k চেক করুন তারপর কাউন্ট + arr[total-k] হিসাবে সেট করুন।

  • রিটার্ন গণনা

  • ফলাফল প্রিন্ট করুন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int sub_k_ones(string str, int length, int k){
   int count = 0;
   int total_1 = 0;
   int arr_fre[length + 1] = {0};
   arr_fre[0] = 1;
   for (int i = 0; i < length; i++){
      total_1 = total_1 + (str[i] - '0');
      if (total_1 >= k){
         count = count + arr_fre[total_1 - k];
      }
      arr_fre[total_1]++;
   }
   return count;
}
int main(){
   string str = "10000100000";
   int length = str.length();
   int k = 2;
   cout<<"Count of substrings of a binary string containing K ones are: "<<sub_k_ones(str, length, k) << endl;
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
Count of substrings of a binary string containing K ones are: 6

  1. C++-এ Wraparound স্ট্রিং-এ অনন্য সাবস্ট্রিং

  2. C++ এ বর্ণানুক্রমিক সাবস্ট্রিংগুলির গণনা খুঁজুন

  3. C++ এ একটি স্ট্রিং বাইনারি অনুসন্ধান করুন

  4. পাইথনে বাইনারি স্ট্রিং-এ সমস্ত 1s সহ সাবস্ট্রিং গণনা করার প্রোগ্রাম