Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ . में एक स्ट्रिंग में "1(0+)1" पैटर्न की घटनाओं की संख्या

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

  1. जांचें कि क्या बाइनरी स्ट्रिंग में सी ++ में हर जगह लगातार दो घटनाएं होती हैं

    यहां हम एक और दिलचस्प समस्या देखेंगे। हमें एक कोड लिखना है जो एक स्ट्रिंग को स्वीकार करता है, जिसमें निम्नलिखित मानदंड हैं। लगातार 1s के प्रत्येक समूह की लंबाई 2 होनी चाहिए लगातार 1 के प्रत्येक समूह को 1 या अधिक 0 के बाद प्रकट होना चाहिए मान लीजिए 0110 की तरह एक स्ट्रिंग है, यह मान्य स्ट्रिंग है,

  1. सी # प्रोग्राम स्ट्रिंग में किसी शब्द की घटनाओं को गिनने के लिए

    पहले स्ट्रिंग सेट करें - string str = "Hello World! Hello!"; अब हैलो शब्द के बार-बार आने के लिए स्ट्रिंग की जाँच करें और - . के माध्यम से लूप करें while ((a = str1.IndexOf(pattern, a)) != -1) {    a += pattern.Length;    count++; } उदाहरण आप स्ट्रिंग में किसी शब्द की ब

  1. पायथन में स्ट्रिंग में किसी वर्ण की घटनाओं की गणना करें

    हमें एक स्ट्रिंग और एक चरित्र दिया जाता है। हम यह पता लगाना चाहते हैं कि दिए गए स्ट्रिंग में दिए गए वर्ण को कितनी बार दोहराया जाता है। रेंज और लेन के साथ हम स्ट्रिंग में मौजूद प्रत्येक वर्ण के साथ वर्ण से मेल खाने के लिए लूप के लिए डिज़ाइन करते हैं जिसे इंडेक्स का उपयोग करके एक्सेस किया जाता है। रे