কম্পিউটার

একটি স্ট্রিংয়ের বিভিন্ন সাবস্ট্রিং যা C++ প্রোগ্রামে প্রদত্ত স্ট্রিং দিয়ে শুরু এবং শেষ হয়


এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম লিখতে যাচ্ছি যা প্রদত্ত স্ট্রিং দিয়ে শুরু এবং শেষ হওয়া মোট সাবস্ট্রিংগুলির সংখ্যা খুঁজে বের করে৷

আমাদের একটি স্ট্রিং এবং দুটি সাবস্ট্রিং দেওয়া হয়েছে। প্রদত্ত দুটি সাবস্ট্রিং দিয়ে শুরু এবং শেষ হওয়া বিভিন্ন সাবস্ট্রিং গণনা আমাদের খুঁজে বের করতে হবে। আসুন একটি উদাহরণ দেখি।

ইনপুট

str = "getmesomecoffee"
start = "m"
end = "e"

আউটপুট

6

প্রদত্ত স্ট্রিংটিতে মোট 6টি ভিন্ন সাবস্ট্রিং রয়েছে। তারা হল me, mesome, mesomemecoffe, mesomemecoffee, mecoffe, mecoffee.

আসুন সমস্যা সমাধানের পদক্ষেপগুলি দেখি৷

  • স্ট্রিং শুরু করুন।

  • str এর উপর পুনরাবৃত্তি করুন এবং শুরু এবং শেষ সাবস্ট্রিং সূচী খুঁজুন। সেগুলিকে আলাদা অ্যারেতে সংরক্ষণ করুন৷

  • বিভিন্ন সাবস্ট্রিং সংরক্ষণ করতে একটি সেট শুরু করুন৷

  • স্ট্রের উপর পুনরাবৃত্তি করুন।

    • বর্তমান সূচকটি আমাদের আগে তৈরি করা অ্যারের স্টার্ট স্ট্রিংয়ের সাথে মেলে কিনা তা পরীক্ষা করুন৷

    • যদি আমরা স্টার্ট স্ট্রিং সূচী খুঁজে পাই, তাহলে শেষ স্ট্রিং অনুসন্ধান করুন।

    • আমরা একটি ভেরিয়েবলের শেষ না পাওয়া পর্যন্ত সমস্ত স্ট্রিং যোগ করুন।

    • যখন আমরা শেষ স্ট্রিংটি খুঁজে পাই, তখন সাবস্ট্রিং গণনা বাড়ান এবং সেটটিতে সাবস্ট্রিং যোগ করুন।

    • সাবস্ট্রিং ভেরিয়েবল রিসেট করুন।

  • সাবস্ট্রিং গণনা প্রিন্ট করুন।

উদাহরণ

আসুন কোডটি দেখি।

#include <bits/stdc++.h>
using namespace std;
int getSubstringsCount(string str, string start, string end) {
   int substrings_count = 0, str_length = str.size(), start_length = start.size(), end_length = end.size();
   int start_matches_index[str_length] = {0}, end_matches_index[str_length] = {0};
   for (int i = 0; i < str_length; i++) {
      if (str.substr(i, start_length) == start) {
         start_matches_index[i] = 1;
      }
      if (str.substr(i, end_length) == end) {
         end_matches_index[i] = 1;
      }
   }
   set<string> substrings;
   string current_substring = "";
   for (int i = 0; i < str_length; i++) {
      if (start_matches_index[i]) {
         for (int j = i; j < str_length; j++) {
            if (!end_matches_index[j]) {
               current_substring += str[j];
            }
            if (end_matches_index[j]) {
               current_substring += str.substr(j, end_length);
               if (substrings.find(current_substring) == substrings.end()) {
                  substrings_count++;
               }
               substrings.insert(current_substring);
            }
         }
         current_substring = "";
      }
   }
   return substrings_count;
}
int main() {
   string str = "getmesomecoffee";
   string start = "m";
   string end = "e";
   cout << getSubstringsCount(str, start, end) << endl;
   return 0;
}

আউটপুট

আপনি যদি উপরের প্রোগ্রামটি চালান, তাহলে আপনি নিম্নলিখিত ফলাফল পাবেন।

6

উপসংহার

টিউটোরিয়ালে আপনার কোন প্রশ্ন থাকলে মন্তব্য বিভাগে উল্লেখ করুন।


  1. C++ ব্যবহার করে প্রদত্ত এক প্রান্ত এবং মধ্য দিয়ে একটি রেখার অন্য প্রান্ত বিন্দু খুঁজুন

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

  3. একটি প্রদত্ত স্ট্রিং এর সমস্ত সাবস্ট্রিং C++ এ প্রিন্ট করার জন্য প্রোগ্রাম

  4. দুটি স্ট্রিংকে সংযুক্ত করার জন্য C++ প্রোগ্রাম