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

C++ में बिल्कुल k विशिष्ट वर्णों वाले सबस्ट्रिंग की संख्या गिनें

एक स्ट्रिंग दिया गया str[] जिसमें केवल लोअरकेस अक्षर और एक पूर्णांक मान k है। लक्ष्य स्ट्र के संभावित सबस्ट्रिंग्स की संख्या का पता लगाना है जिनमें बिल्कुल k विशिष्ट तत्व हैं।

उदाहरण के लिए

इनपुट

str= ”pqr” k=2

आउटपुट

Count of number of substrings with exactly k distinct characters are: 2

स्पष्टीकरण

The substrings having exactly 2 distinct elements are: “pq”, “qr”.

इनपुट

str= ”stristr” k=4

आउटपुट

Count of number of substrings with exactly k distinct characters are: 10

स्पष्टीकरण

The substrings having exactly 2 distinct elements are:
“stri”, “tris”, “rist”, “istr”, “stris”, “trist”, “ristr”, “strist”, “tristr”, “stristr”.

नीचे दिए गए कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है -

इस दृष्टिकोण में हम स्ट्रिंग स्ट्र के अंदर अंग्रेजी अक्षरों की आवृत्ति को स्टोर करने के लिए एक सरणी सरणी [26] करेंगे। अब लूप के लिए दो का उपयोग करके ट्रैवर्स स्ट्र, यदि सबस्ट्रिंग के लिए, प्रत्येक वर्ण एक बार घटित हो रहा है, तो उस सबस्ट्रिंग के अंत में अद्वितीय वर्णों की वृद्धि संख्या, यदि वह गिनती k के बराबर है, तो दी गई शर्तों का पालन करते हुए सबस्ट्रिंग की वृद्धि संख्या।

  • इनपुट के रूप में एक स्ट्रिंग स्ट्रिंग लें।

  • धनात्मक मान वाला एक पूर्णांक k लें।

  • फ़ंक्शन substring_k(string str, int length, int k) str और k लेता है और बिल्कुल k विशिष्ट वर्णों के साथ सबस्ट्रिंग की संख्या की गणना करता है।

  • प्रारंभिक गणना 0 के रूप में लें।

  • आवृत्ति सरणी सरणी लें[26]।

  • i=0 से i

  • str[i to j] सबस्ट्रिंग में अद्वितीय तत्वों की गिनती के रूप में अस्थायी लें।

  • यदि array[str[j] - 'a']==0 तो यह वर्ण str[j] इस विकल्प में पहली बार आया है। तो वृद्धि अस्थायी।

  • अब array[str[j] - 'a']++.

    . का उपयोग करके वर्तमान वर्ण की वृद्धि गणना
  • यदि तापमान k के बराबर है तो वेतन वृद्धि की गणना करें।

  • यदि तापमान k से अधिक है तो आगे आना बंद कर दें और लूप को तोड़ दें।

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

उदाहरण

#include<bits/stdc++.h>
using namespace std;
int substring_k(string str, int length, int k){
   int count = 0;
   int array[26];
   for (int i = 0; i < length; i++){
      int temp = 0;
      memset(array, 0, sizeof(array));
      for (int j = i; j < length; j++){
         if(array[str[j] − 'a'] == 0){
            temp++;
         }
         array[str[j] − 'a']++;
         if (temp == k){
            count++;
         }
         if(temp > k){
            break;
         }
      }
   }
   return count;
}
int main(){
   string str = "abc";
   int length = str.length();
   int k = 1;
   cout<<"Count of number of substrings with exactly k distinct characters are: "<<substring_k(str, length, k);
   return 0;
}

आउटपुट

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

Count of number of substrings with exactly k distinct characters are: 3

  1. सी ++ में दिए गए स्ट्रिंग के सभी सबस्ट्रिंग के अद्वितीय वर्णों की गणना करें

    मान लीजिए कि हम countUniqueChars(s) नामक एक फ़ंक्शन को परिभाषित करना चाहते हैं जो s पर अद्वितीय वर्णों की संख्या लौटाएगा, इसलिए यदि s =HELLOWORLD तो H, E, W, R, D अद्वितीय वर्ण हैं क्योंकि वे s में केवल एक बार दिखाई देते हैं, इसलिए countUniqueChars(s) =5. अब इस समस्या पर एक स्ट्रिंग दी गई है, हमें

  1. सी ++ में समान पड़ोसियों के साथ वर्णों की गणना करें

    हमें एक स्ट्रिंग दी गई है, मान लें, str और कार्य समान पड़ोसियों वाले स्ट्रिंग str में वर्णों की गणना करना है और इसमें स्ट्रिंग में वर्ण के बाएँ और दाएँ दोनों पक्ष शामिल होंगे। साथ ही, इस परिदृश्य में एक स्ट्रिंग में पहला और अंतिम वर्ण हमेशा माना जाएगा क्योंकि उनके पास केवल एक आसन्न वर्ण है। उदाहरण क

  1. पायथन में एस में अलग-अलग सबस्ट्रिंग की संख्या गिनने का कार्यक्रम

    मान लीजिए कि हमारे पास एक स्ट्रिंग s है, हमें s के अलग-अलग गैर-रिक्त सबस्ट्रिंग की संख्या ज्ञात करनी है। इसलिए, यदि इनपुट s =abaa जैसा है, तो आउटपुट 8 होगा, क्योंकि सबस्ट्रिंग [a, b, ab, ba, aa, aba, बा, आबा]। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - कोशिश करें:=एक नया नक्शा n :=आकार का