এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম লিখতে যাচ্ছি যা প্রদত্ত স্ট্রিং দিয়ে শুরু এবং শেষ হওয়া মোট সাবস্ট্রিংগুলির সংখ্যা খুঁজে বের করে৷
আমাদের একটি স্ট্রিং এবং দুটি সাবস্ট্রিং দেওয়া হয়েছে। প্রদত্ত দুটি সাবস্ট্রিং দিয়ে শুরু এবং শেষ হওয়া বিভিন্ন সাবস্ট্রিং গণনা আমাদের খুঁজে বের করতে হবে। আসুন একটি উদাহরণ দেখি।
ইনপুট
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
উপসংহার
টিউটোরিয়ালে আপনার কোন প্রশ্ন থাকলে মন্তব্য বিভাগে উল্লেখ করুন।