এই টিউটোরিয়ালে আমরা একটি প্রোগ্রাম লিখব যা দেওয়া স্ট্রিংসে শুরু এবং শেষ হওয়া সাবস্ট্রিংগুলোর মোট সংখ্যা বের করবে।
একটি স্ট্রিং এবং দুটি সাবস্ট্রিং দেওয়া আছে। আমাদের সেই সাবস্ট্রিংগুলোর সংখ্যা বের করতে হবে যা দেওয়া দুটি সাবস্ট্রিং দিয়ে শুরু এবং শেষ হয়। একটি উদাহরণ দেখি।
ইনপুট
str = "getmesomecoffee" start = "m" end = "e"
আউটপুট
6
দেওয়া স্ট্রিংসে মোট ৬টি ভিন্ন সাবস্ট্রিং আছে। সেগুলো হলো me, mesome, mesomemecoffe, mesomemecoffee, mecoffe, mecoffee.
সমস্যা সমাধানের ধাপগুলো:
স্ট্রিংগুলো ইনিশিয়ালাইজ করুন।
স্ট্রিংয়ের ওপর ইটারেট করে শুরু এবং শেষ সাবস্ট্রিংর ইন্ডেক্স বের করুন। সেগুলো আলাদা অ্যারেতে স্টোর করুন।
ভিন্ন সাবস্ট্রিং স্টোর করার জন্য একটি সেট ইনিশিয়ালাইজ করুন।
স্ট্রিংয়ের ওপর ইটারেট করুন।
বর্তমান ইন্ডেক্স শুরু সাবস্ট্রিংর অ্যারে থেকে মেলে কিনা তা যাচাই করুন।
যদি শুরু সাবস্ট্রিংর ইন্ডেক্স পাওয়া যায়, তবে শেষ সাবস্ট্রিং খুঁজুন।
শেষ সাবস্ট্রিং পাওয়া পর্যন্ত স্ট্রিংগুলো একটি ভেরিয়েবলে যোগ করুন।
যখন শেষ সাবস্ট্রিং পাওয়া যায়, সাবস্ট্রিং কাউন্ট বাড়ান এবং সেটে সাবস্ট্রিং যোগ করুন।
সাবস্ট্রিং ভেরিয়েবল রিসেট করুন।
সাবস্ট্রিং কাউন্ট প্রিন্ট করুন।
উদাহরণ
নিচে কোডটি দেওয়া হলো:
#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
উপসংহার
টিউটোরিয়াল সম্পর্কে কোনো প্রশ্ন থাকলে কমেন্ট সেকশনে জানান।