हमें स्ट्रिंग स्ट्र और लंबाई 3 का एक सबस्ट्रिंग सब_स्ट्र दिया गया है। लक्ष्य स्ट्र में बाद के सब_स्ट्र की गिनती का पता लगाना है। उदाहरण "एक्ट" "मोतियाबिंद" (मोतियाबिंद, मोतियाबिंद, मोतियाबिंद) में तीन बार होता है।
आइए उदाहरणों से समझते हैं।
इनपुट - str="निपटान" sub_str="सेट"
आउटपुट - किसी दिए गए स्ट्रिंग में लंबाई तीन के बाद की गणना हैं:5
स्पष्टीकरण - इसके बाद होंगे -
1. set tlement, 2. se t t lement, 3. se ttlemen t, 4. s ettl e men t, 5. settlem e n t
इनपुट - str="ज्ञान" sub_str="अब"
आउटपुट − दी गई स्ट्रिंग में लंबाई तीन के बाद के क्रम की गणना है − 1
स्पष्टीकरण − इसके बाद के परिणाम होंगे - बढ़त को जानें
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
हम लूप के लिए स्ट्रिंग स्ट्र को पार करेंगे। यदि कोई str[i]==sub_str[0] तो अगले वर्ण sub_str[1] की तुलना str[current i से i
स्ट्रिंग को str के रूप में लें और सबस्ट्रिंग को sub_str के रूप में लें।
फ़ंक्शन सबसेट_ओकरेंस (स्ट्रिंग स्ट्र, इंट लेंथ, स्ट्रिंग सब_स्ट्र) स्ट्रिंग लेता है और स्ट्र में सब_स्ट्र के समान बाद की गिनती देता है।
लूप के लिए उपयोग कर ट्रैवर्स स्ट्र। i=0 से i<लंबाई तक।
यदि कोई str[i]==sub_str[0], पहला अक्षर मिला। इसके बाद j=i+1 से j<लंबाई तक चेक करें।
यदि कोई str[j]==sub_str[1], दूसरा वर्ण मेल खाता है। k=j+1 से k<लंबाई तक आगे चेक करें।
अगर str[k]==sub_str[2]. वेतन वृद्धि की संख्या।
परिणाम के रूप में वापसी की गिनती।
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
उदाहरण
#include<iostream>
using namespace std;
int subset_occurrence(string str, int length, string sub_str){
int count = 0;
for (int i=0; i<length; i++){
if (str[i]==sub_str[0]){
for (int j=i+1; j< length; j++){
if(str[j]==sub_str[1]){
for(int k=j+1; k<length; k++){
if(str[k]==sub_str[2])
{ count++; }
}
}
}
}
}
return count;
}
int main(){
string str = "TUTpoinTUTpoinTUT";
int length = str.length();
string sub_str = "TUT";
cout<<"Count of subsequence of length three in a given string are: "<<subset_occurrence(str, length, sub_str);
return 0;
}
आउटपुट
Count of subsequence of length three in a given string are: 19