এই সমস্যাতে, দুটি স্ট্রিং str1 এবং str2 দেওয়া আছে। আমাদের কাজ হলো চেক করা str2-এর সব ক্যারেক্টার str1-এ আছে কিনা।
উদাহরণ:
ইনপুট -
str1 = "Hello" str2 = "Hell"
আউটপুট - yes
ব্যাখ্যা - str2-এর সব ক্যারেক্টার str1-এ উপস্থিত।
সমাধানের জন্য, একটি সহজ সমাধান হবে str2-এর প্রতিটি ক্যারেক্টার str1-এ চেক করা এবং ফলাফল রিটার্ন করা।
কিন্তু আমাদের কার্যকর সমাধান তৈরি করতে হবে। তাই আমরা একটি ফ্রিকোয়েন্সি অ্যারে (লেন্থ ২৫৬ সব ভ্যালিড ক্যারেক্টারের জন্য) ব্যবহার করব এবং str1 ট্রাভার্স করে ফ্রিকোয়েন্সি অ্যারে বেড়াব соответствующий ক্যারেক্টার অনুযায়ী। তারপর str2 ট্রাভার্স করব, যা ফ্রিকোয়েন্সি অ্যারে কমিয়ে দেবে উপস্থিতির সময়। এবং প্রতিটি ইটারেশনে চেক করব এই ফ্রিকোয়েন্সি নেগেটিভ হয়েছে কিনা। যদি হয়, তবে সম্ভব নয়, অন্যথায় সম্ভব।
উদাহরণ
সমাধানের প্রোগ্রাম:
#include <iostream>
#include <string.h>
using namespace std;
bool isPresent(string str1, string str2) {
int freq[256] = { 0 };
for (int i = 0; i < str1.length(); i++)
freq[str1[i]]++;
for (int i = 0; i < str2.length(); i++) {
if (freq[str2[i]] < 1)
return false;
}
return true;
}
int main() {
string str1 = "tutorialspoint";
string str2 = "point";
cout << "All charcters of '" << str2 << "' are ";
isPresent(str1,str2) ? cout << "present" : cout << "not present";
cout << " in '" << str1 << "' ";
return 0;
} আউটপুট
All charcters of 'point' are present in 'tutorialspoint'