इस समस्या में, हमें दो स्ट्रिंग str1 और str2 दी गई हैं। हमारा कार्य यह जांचना है कि क्या str2 के सभी वर्ण str1 में मौजूद हैं।
समस्या को समझने के लिए एक उदाहरण लेते हैं
इनपुट -
str1 = "Hello" str2 = "Hell"
आउटपुट - हां
व्याख्या - str2 के सभी वर्ण str1 में मौजूद हैं।
इस समस्या को हल करने के लिए, एक सरल समाधान str2 के प्रत्येक वर्ण को str1 में जांचना और फिर समाधान वापस करना होगा।
लेकिन हमें प्रभावी समाधान बनाने की आवश्यकता है। इसलिए, हम एक फ्रीक्वेंसी ऐरे (सभी वैध वर्णों के लिए लंबाई 256) का उपयोग करेंगे और फिर 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 << "'" << str2 << "' के सभी वर्ण ";
isPresent(str1, str2) ? cout << "मौजूद हैं" : cout << "मौजूद नहीं हैं";
cout << " '" << str1 << "' में";
return 0;
}
आउटपुट
'point' के सभी वर्ण 'tutorialspoint' में मौजूद हैं