हमें एक स्ट्रिंग str दिया गया है जिसमें 0s,1s और अन्य अक्षर हैं। इसमें "1(0+)1" फॉर्म के पैटर्न भी शामिल हैं जहां 0+ का मतलब लगातार 0s की कोई भी संख्या (>0) है। लक्ष्य स्ट्रिंग स्ट्र के अंदर ऐसे पैटर्न ("1(0+)1") को खोजना है।
आइए उदाहरणों के साथ समझते हैं
इनपुट - str ="abb010bb10111011"
आउटपुट - एक स्ट्रिंग में "1(0+)1" पैटर्न की घटनाओं की संख्या है - 2
स्पष्टीकरण - str के अंदर के पैटर्न हाइलाइट किए गए हैं:"abb010bb10111011", "abb010bb10111011"
इनपुट - str ="01001011001001100"
आउटपुट - एक स्ट्रिंग में "1(0+)1" पैटर्न की घटनाओं की संख्या है - 4
स्पष्टीकरण - str के अंदर के पैटर्न हाइलाइट किए गए हैं:"01001011001001100", "01001011001001100", "01001011001001100", "01001011001001100"
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
यह देखा जा सकता है कि सभी पैटर्न 1 से शुरू और समाप्त होते हैं। हम पहले 1 को फ्लैग वेरिएबल चेक =1 का उपयोग करके चिह्नित करेंगे और सभी 0 को छोड़ देंगे।
किसी अन्य वर्ण के लिए (न तो 0 और न ही 1 ) चेक को 0 के रूप में सेट करें।
यदि हम एक और 1 पाते हैं और फ्लैग चेक 1 है तो देखें कि क्या पिछला मान 0 है। यदि हाँ, तो पिछले 0 के रूप में वृद्धि की गणना दो के बीच में है। किसी भी गैर 0 या 1 सेट के लिए फिर से 0 के रूप में चेक करें।
-
इनपुट स्ट्रिंग को str के रूप में लें।
-
फ़ंक्शन Pattern_occurrences(string str, int length) स्ट्रिंग और उसकी लंबाई लेता है और स्ट्रिंग में "1(0+)1" पैटर्न की घटनाओं की संख्या देता है
-
प्रारंभिक गणना 0 के रूप में लें।
-
प्रारंभ में फ्लैग वैरिएबल चेक को 0 के रूप में लें।
-
अनुक्रमणिका i=0 से i<लंबाई तक लूप के लिए ट्रैवर्स str का उपयोग करना।
-
यदि वर्तमान वर्ण str[i] 1 है और चेक 0 है तो चेक को 1 के रूप में सेट करें और जारी रखें।
-
यदि वर्तमान वर्ण str[i] 1 है और चेक 1 है। तो यह दूसरा है 1. जाँच करें कि क्या पिछला मान str[i-1] 0 है। यदि हाँ तो पैटर्न पाया गया। वेतन वृद्धि की संख्या।
-
यदि वर्तमान वर्ण न तो 0 और न ही 1 है तो यह कभी भी पैटर्न का हिस्सा नहीं होगा। चेक को 0 के रूप में सेट करें। अब अगला सामना किया गया 1 अगले पैटर्न की शुरुआत के रूप में माना जाएगा (यदि मौजूद है)।
-
अंत में गिनती में str के अंदर ऐसे कई पैटर्न होंगे।
-
परिणाम के रूप में वापसी की गिनती।
उदाहरण
#include<iostream>
using namespace std;
int Pattern_occurrences(string str, int length){
int count = 0;
bool check = 0;
for (int i = 0; i < length ; i++){
if (str[i] == '1' && check == 1){
if (str[i - 1] == '0'){
count++;
}
}
if (str[i] == '1' && check == 0){
check = 1;
continue;
}
if (str[i] != '0' && str[i] != '1'){
check = 0;
}
}
return count;
}
int main(){
string str = "01010111011";
int length = str.length();
cout<<"Count of occurrences of a “1(0+)1” pattern in a string are: "<< Pattern_occurrences(str, length);
return 0;
} आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Count of occurrences of a “1(0+)1” pattern in a string are: 3