এই আর্টিকেলে, আমাদের দুটি স্ট্রিং দেওয়া আছে। আমাদের বের করতে হবে প্রথম স্ট্রিংয়ের কতগুলো সাবস্ট্রিং (substring) দ্বিতীয় স্ট্রিংয়ে পাওয়া যায় (একই সাবস্ট্রিং একাধিকবারও থাকতে পারে)। উদাহরণ −
ইনপুট: string1 = "fogl", string2 = "google" আউটপুট: 6 ব্যাখ্যা: string1-এর string2-এ পাওয়া যাওয়া সাবস্ট্রিং: ["o", "g", "l", "og", "gl", "ogl"]। ইনপুট: string1 = "ajva", string2 = "java" আউটপুট: 5 ব্যাখ্যা: সাবস্ট্রিং: ["a", "j", "v", "a", "va"]।
এই সমস্যা সমাধানের জন্য: প্রথমে string1-এর সব সম্ভাব্য সাবস্ট্রিং বের করব, তারপর প্রতিটি সাবস্ট্রিং চেক করব যে সেটি string2-এ আছে কিনা। থাকলে কাউন্টার বাড়াব, পুরো স্ট্রিং প্রসেস হলে কাউন্টারের মান ফেরত দিব।
নিচে দিয়ে गयी C++ সিনট্যাক্স ব্যবহার করে এই সমস্যা সমাধান করা যায় −
#include<iostream> #include<string> using namespace std; int main() { string str1 = "ajva"; string str2 = "java"; int count = 0; // ফলাফল রাখার কাউন্টার int n = str1.length(); for (int i = 0; i < n; i++) { string str3; // string1-এর সাবস্ট্রিং রাখতে for (int j = i; j < n; j++) { str3 += str1[j]; // চেক করা সাবস্ট্রিংটি অন্য স্ট্রিংয়ে আছে কিনা if (str2.find(str3) != string::npos) count++; } } cout << "Number of substrings of one string present in other : " << count; return 0; }
Number of substrings of one string present in other : 5
প্রথমে উভয় স্ট্রিংয়ের মান দেওয়া হয়েছে এবং কাউন্টার ০ দিয়ে ইনিশিয়ালাইজ। পুরো স্ট্রিং ট্রাভার্স করে str1-এর সব সাবস্ট্রিং বের করে str3-তে রাখা হয়েছে। তারপর প্রতিটি সাবস্ট্রিং str2-এ আছে কিনা চেক করা হয়েছে; থাকলে কাউন্টার ১ বাড়ানো হয়েছে। অবশেষে কাউন্টার ভেরিয়েবলে সংরক্ষিত আউটপুট প্রিন্ট করা হয়েছে।
এই আর্টিকেলে একটি স্ট্রিংয়ের সাবস্ট্রিং অন্য স্ট্রিংয়ে আছে কিনা চেক করে গণনা করার সহজ সমাধান দেওয়া হয়েছে। একই প্রোগ্রাম C, Java, Python ইত্যাদি ভাষায়ও লিখা যায়। আশা করি আপনি এই আর্টিকেলটি সহায়ক পাবেন।