हमें एक स्ट्रिंग 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