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

সি++ প্রোগ্রাম: দিয়ে থাকা স্ট্রিং-এ "1(0+)1" প্যাটার্নের সব.matches খুঁজে বের করা


একটি স্ট্রিং-এ 1(0+)1 প্যাটার্ন থাকতে পারে। এখানে (0+) বোঝায় ০-এর নন-এম্পটি (non-empty) ক্রমাগত আবির্ভাব। এই সব প্যাটার্ন বের করতে হবে। প্যাটার্নগুলো ওভারল্যাপ (overlap) হতে পারে। স্ট্রিং শুধু বাইনারি নয়, এতে ডিজিট ও লোয়ারকেস ক্যারেক্টারও থাকতে পারে। স্ট্রিং "1101001" হলে দুটি প্যাটার্ন: 101 এবং 1001।

সমাধানের ধাপ:

  • স্ট্রিং-এর সব ক্যারেক্টার c ঘুরে বের করা

  • c = '1' হলে, '0' পাওয়া পর্যন্ত ঘুরা

  • ০-এর স্ট্রিম (stream) শেষ হলে, পরবর্তী ক্যারেক্টার '1' কিনা যাচাই করা

  • এই ধাপগুলো স্ট্রিং শেষ পর্যন্ত রিপিট করা

উদাহরণ

#include<iostream> using namespace std; int countBinPattern(string main_str) {    char last_char = main_str[0];    int i = 1, counter = 0;    while (i < main_str.size()) {       if (main_str[i] == '0' && last_char == '1') {          while (main_str[i] == '0')             i++;          if (main_str[i] == '1')             counter++;       }       last_char = main_str[i];          i++;    }    return counter; } int main() {    string str = "10010110000101";    cout << "Number of substrings of pattern 1(0+)1 is: " << countBinPattern(str); }

আউটপুট

Number of substrings of pattern 1(0+)1 is: 4

  1. C++ দিয়ে একটি স্ট্রিংয়ের সাবস্ট্রিং-এর সংখ্যা বের করা

  2. C++-এ পারফেক্ট বাইনারি ট্রি (Perfect Binary Tree) সকল নোডের যোগফল নির্ণয়

  3. পাইথন রেজেক্স ব্যবহার করে স্ট্রিং থেকে ‘1(0+)1’ প্যাটার্ন খুঁজে বের করা

  4. পাইথনে Regex ব্যবহার করে স্ট্রিংয়ে 10+1 প্যাটার্নের সব_match বের করার প্রোগ্রাম