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

सी ++ में स्ट्रिंग में संतुलन की स्थिति की संख्या पाएं

मान लीजिए कि हमारे पास एक स्ट्रिंग है। हमें उस स्ट्रिंग में बैलेंसिंग पोजीशन काउंट का पता लगाना है जहाँ से स्ट्रिंग के बाएँ और दाएँ भाग में समान वर्ण हों। पात्रों की आवृत्ति कोई फर्क नहीं पड़ता। इसलिए यदि स्ट्रिंग "ABAABA" है, तो संतुलन स्थितियों की संख्या 3 है। ये स्थितियाँ हैं AB|AABA, ABA|ABA, ABAA|BA।

इसे हल करने के लिए, हम कुछ कुशल दृष्टिकोण का पालन करेंगे। स्ट्रिंग को पार करने के बाद हम सभी वर्णों की गणना के साथ सबसे पहले सही [] महसूस करते हैं। फिर स्ट्रिंग को बाएं से दाएं घुमाएं। प्रत्येक वर्ण के लिए हम बाएं [] में इसकी गिनती बढ़ाते हैं और गिनती को दाएं घटाते हैं। किसी भी बिंदु को पार करने के लिए, यदि सभी वर्ण जिनके बाईं ओर गैर-शून्य मान हैं, तो भी गैर-शून्य मान दाईं ओर है, और इसके विपरीत भी सत्य है। फिर परिणाम बढ़ाएँ।

उदाहरण

#include <iostream>
#include <algorithm>
#define MAX_CHAR 256
using namespace std;
int countBalancePoints(string str) {
   int left[MAX_CHAR] = {0};
   int right[MAX_CHAR] = {0};
   for (int i=0; i<str.length(); i++)
   right[str[i]]++;
   int count = 0;
   for (int i=0; i < str.length() ; i++) {
      left[str[i]]++;
      right[str[i]]--;
      int j;
      for (j=0; j<MAX_CHAR; j++) {
         if ( (left[j] == 0 && right[j] != 0) || (left[j] != 0 && right[j] == 0))
         break;
      }
      if (j == MAX_CHAR)
         count++;
   }
   return count;
}
int main() {
   char str[] = "ABAABA";
   cout << "Number of balance points: " << countBalancePoints(str);
}

आउटपुट

Number of balance points: 3

  1. सी ++ में एक क्रमबद्ध सरणी में के निकटतम संख्याएं खोजें

    विचार करें कि हमारे पास कुछ तत्वों के साथ एक सरणी ए है। सरणी क्रमबद्ध नहीं है। हमारे पास दो अन्य मान X और k हैं। हमारा कार्य सरणी A से X के निकटतम तत्वों की k संख्या ज्ञात करना है। यदि तत्व X सरणी में मौजूद है, तो यह आउटपुट में नहीं दिखाया जाएगा। अगर ए =[48, 50, 55, 30, 39, 35, 42, 45, 12, 16, 53, 2

  1. सी ++ में लंबाई एल की स्ट्रिंग के जादुई जोड़े की संख्या पाएं।

    मान लीजिए कि हमारे पास दो तार str1 और str2 हैं, हमें लंबाई L के कई जादुई जोड़े खोजने हैं। दो तार जादुई होंगे यदि प्रत्येक अनुक्रमणिका I के लिए, str1[i]

  1. C++ प्रोग्राम, S की माध्यिका के निकटतम k संख्याएँ ज्ञात करने के लिए, जहाँ S, n संख्याओं का समुच्चय है

    यह एक C++ प्रोग्राम है जो K संख्याओं को S की माध्यिका के सबसे निकट पाता है, जहाँ S, n संख्याओं का एक समूह है। एल्गोरिदम Begin    function partition() for partitioning the array on the basis of values at high as pivot value:    Arguments:       a[]=an array.