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

उप-स्ट्रिंग की संख्या जिसमें C++ में कम से कम एक बार वर्ण X होता है

हमें एक स्ट्रिंग str[] और एक वर्ण X दिया गया है। लक्ष्य str[] के सबस्ट्रिंग को इस प्रकार खोजना है कि सभी सबस्ट्रिंग में कम से कम एक बार X हो। str[]=”abc' और X='a' के लिए, कम से कम एक बार 'a' वाले सबस्ट्रिंग्स "a", "ab", "abc" हैं। गिनती 3 है।

आइए उदाहरणों से समझते हैं।

इनपुट − str[] ="aabccd" X='c'

आउटपुट − उप-स्ट्रिंग की संख्या जिनमें कम से कम एक बार वर्ण X होता है − 14

स्पष्टीकरण - कम से कम एक 'सी' वाले सबस्ट्रिंग होंगे:"सी", "सी", "बीसी", "सीसी", "सीडी", "एबीसी", "बीसीसी", "सीसीडी", "एएबीसी", " एबीसीसी", "बीसीसीडी", "एएबीसीसी", "एबीसीसीडी", "एएबीसीसीडी"।

इनपुट - str[] ="सेटिंग्स" X='s'

आउटपुट − उप-स्ट्रिंग की संख्या जिनमें कम से कम एक बार वर्ण X होता है − 14

स्पष्टीकरण - सबस्ट्रिंग में कम से कम एक 'एस' होगा:"एस", "एस", "से", "जीएस", "सेट", "एनजी", "सेट", "आईएनजी", "सेटी", " tings", "सेटिन", "टिंग्स", "सेटिंग", "सेटिंग", "सेटिंग्स"

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

इस दृष्टिकोण में हम जानते हैं कि n वर्णों के साथ स्ट्रिंग के सबस्ट्रिंग की कुल संख्या n*(n+1)/2 है।

अब हम स्ट्रिंग को पार करेंगे और वर्ण X से पहले वर्णों को अस्थायी के रूप में गिनेंगे। जैसे ही एक्स का सामना करना पड़ता है, एक्स युक्त स्ट्रिंग्स की लंबाई अस्थायी + 1 होगी। अब हमारे पास एक्स युक्त सबस्ट्रिंग्स की संख्या शेष वर्ण (लंबाई-वर्तमान सूचकांक) एक्स (अस्थायी + 1) होगी। इसे गिनने के लिए जोड़ें। अब अस्थायी =0 अपडेट करें और स्ट्रिंग के अंत तक अगले एक्स के लिए आगे बढ़ें। अंत में हमें उप-स्ट्रिंग की संख्या के रूप में गिना जाता है जिसमें कम से कम एक बार वर्ण X होता है।

  • एक स्ट्रिंग str और एक वर्ण x लें।

  • फ़ंक्शन sub_x(char str[],int length,char x) एक स्ट्रिंग लेता है, इसकी लंबाई, वर्ण x और उन सबस्ट्रिंग्स की गिनती देता है जिनमें कम से कम एक बार वर्ण x होता है।

  • प्रारंभिक गणना को 0 के रूप में लें। शुरुआत में str[] में पहले x से पहले अस्थायी को वर्णों के रूप में लें।

  • str[] के सभी संभावित सबस्ट्रिंग की संख्या के लिए प्रारंभिक गणना आकार*(आकार+1)/2 लें।

  • ट्रैवर्स str[] लूप के लिए i=0 से i<आकार तक का उपयोग कर रहा है।

  • यदि str[i] x नहीं है, तो पहले x से पहले वर्णों के रूप में अस्थायी वृद्धि करें।

  • अगर str[i] ==x तो x सहित स्ट्रिंग की लंबाई temp+1 होगी। str[] के शेष अक्षर लंबाई-i होंगे।

  • सभी सबस्ट्रिंग्स (temp+1) * (लंबाई-i) होंगी। इसे गिनने के लिए जोड़ें। अब अगले पुनरावृत्ति के लिए अस्थायी =0 अपडेट करें।

  • ऐसा तब तक करें जब तक कि str[] का अंत न हो जाए।

  • अंत में परिणाम के रूप में वापसी की गिनती।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int sub_x(string str, int length, char x){
   int count = 0;
   int temp = 0;
   for (int i = 0; i < length; i++){
      if (str[i] == x){
         int temp_2 = temp + 1;
         count = count + temp_2 * (length - i);
         temp = 0;
      }
      else{
         temp++;
      }
   }
   return count;
}
int main(){
   string str = "abcabbc";
   int length = str.length();
   char x = 'a';
   cout<<"Count of sub-strings that contain character X at least once are: "<<sub_x(str, length,
x);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Count of sub-strings that contain character X at least once are: 19

  1. गिनती नं। C++ में बढ़ते क्रम में क्रमबद्ध नहीं किए गए स्तंभों की संख्या

    हमें समान लंबाई के तारों की एक सरणी दी गई है। लक्ष्य कॉलम, (मैट्रिक्सऑफ स्ट्रिंग्स) को खोजना है जो बढ़ते क्रम में क्रमबद्ध नहीं हैं। उदाहरण के लिए, स्ट्रिंग में प्रत्येक पहले वर्ण की तुलना अगले स्ट्रिंग के पहले वर्ण से की जाती है और इसी तरह अंतिम स्ट्रिंग तक। यदि वे बढ़ते क्रम में नहीं हैं, तो गिनती

  1. C++ में एक स्ट्रिंग में सभी पालिंड्रोम उप-स्ट्रिंग की गणना करें

    इस ट्यूटोरियल में, हम एक स्ट्रिंग में पैलिंड्रोम सबस्ट्रिंग्स की संख्या को खोजने के लिए एक प्रोग्राम पर चर्चा करेंगे। इसके लिए हमें एक स्ट्रिंग दी जाएगी। हमारा काम 3 से अधिक लंबाई वाले दिए गए स्ट्रिंग में पैलिंड्रोम सब स्ट्रिंग्स की संख्या गिनना है। उदाहरण #include<bits/stdc++.h> using namesp

  1. 1 से n तक की संख्याओं की गणना करें जिनमें C++ में एक अंक के रूप में 4 हों

    इस ट्यूटोरियल में, हम 1 से n तक की संख्याओं को खोजने के लिए एक प्रोग्राम पर चर्चा करेंगे, जिसमें 4 अंक होंगे। इसके लिए हमें एक नंबर n प्रदान किया जाएगा। हमारा काम उन सभी नंबरों को गिनना है जिनमें 4 अंकों में से एक है और उसका प्रिंट आउट लेना है। उदाहरण #include<iostream> using namespace std; b