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

C++-এ দেয়া স্ট্রিং-এ দৈর্ঘ্য ৩-এর সাবসিকোয়েন্স কাউন্ট


আমাদের একটি স্ট্রিং str এবং দৈর্ঘ্য ৩-এর একটি সাবস্ট্রিং sub_str দেওয়া আছে। লক্ষ্য হলো str-এ sub_str কতবার সাবসিকোয়েন্স (subsequence) হিসেবে পাওয়া যায়। উদাহরণস্বরূপ, "act" ত্রিবার পাওয়া যায় "cataract"-এ (cataract, cataract, cataract)।

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

ইনপুট − str="settlement", sub_str="set"

আউটপুট − দৈর্ঘ্য ৩-এর সাবসিকোয়েন্স কাউন্ট: ৫

ব্যাখ্যা − সাবসিকোয়েন্স গুলো:

1. set tlement, 2. se t t lement, 3. se ttlemen t, 4. s ettl e men t, 5. settlem e n t

ইনপুট − str="knowledge", sub_str="now"

আউটপুট − দৈর্ঘ্য ৩-এর সাবসিকোয়েন্স কাউন্ট: ১

ব্যাখ্যা − সাবসিকোয়েন্স: know ledge

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

for লুপ দিয়ে স্ট্রিং ট্রাভার্স করব। যদি str[i]==sub_str[0] হয়, তবে পরবর্তী ক্যারেক্টার sub_str[1] খুঁজব j=i+1 থেকে। মিল পাওয়া গেলে শেষ ক্যারেক্টার sub_str[2] খুঁজব k=j+1 থেকে। দুটি মিল পাওয়া গেলে কাউন্ট বাড়াব।

  • স্ট্রিং str এবং সাবস্ট্রিং sub_str নিন।
  • subset_occurrence(string str, int length, string sub_str) ফাংশন স্ট্রিং গুলো নিয়ে sub_str মэтচ সাবসিকোয়েন্স কাউন্ট রিটার্ন করে।
  • i=0 থেকে length পর্যন্ত লুপে:
    • str[i]==sub_str[0] হলে: j=i+1 থেকে length পর্যন্ত লুপে sub_str[1] খুঁজুন।
    • মিল পাওয়া গেলে: k=j+1 থেকে length পর্যন্ত লুপে sub_str[2] খুঁজুন।
    • মিল পাওয়া গেলে count++।
  • count রিটার্ন করুন।

উদাহরণ

#include <iostream>
using namespace std;

int subset_occurrence(string str, int length, string sub_str) {
    int count = 0;
    for (int i = 0; i < length; i++) {
        if (str[i] == sub_str[0]) {
            for (int j = i + 1; j < length; j++) {
                if (str[j] == sub_str[1]) {
                    for (int k = j + 1; k < length; k++) {
                        if (str[k] == sub_str[2]) {
                            count++;
                        }
                    }
                }
            }
        }
    }
    return count;
}

int main() {
    string str = "TUTpoinTUTpoinTUT";
    int length = str.length();
    string sub_str = "TUT";
    cout << "Count of subsequence of length three in a given string are: " << subset_occurrence(str, length, sub_str);
    return 0;
}

আউটপুট

Count of subsequence of length three in a given string are: 19
  1. C++-এ দিয়ে স্ট্রিংয়ে সব প্যালিনড্রোমিক সাবসিকোয়েন্স গণনা

  2. C++-এ একটি প্যালিনড্রোম স্ট্রিং B বানান যাতে দেওয়া স্ট্রিং A তার সাবসিকোয়েন্স

  3. C++-এ একটি স্ট্রিং-এর সাবসিকোয়েন্স যা অন্য স্ট্রিং-এর সাবস্ট্রিং, তার সর্বোচ্চ দৈর্ঘ্য

  4. C++-এ একটি স্ট্রিং সম-স্ট্রিং (sum-string) কিনা তা যাচাই করা