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

बाइनरी स्ट्रिंग में शून्य और एक का अधिकतम अंतर - (O(n) समय) C++ . में

कार्य को देखते हुए किसी दिए गए बाइनरी स्ट्रिंग से एक उप-स्ट्रिंग और फिर शून्य और एक की संख्या के बीच अधिकतम अंतर खोजना है।

आइए अब समझते हैं कि हमें एक उदाहरण का उपयोग करके क्या करना है -

इनपुट

str = “10010110”

आउटपुट

2

स्पष्टीकरण

उप-सरणी में स्थिति 1 से 4 ("0010") तक, शून्य और वाले के बीच का अंतर =3 - 1 =2 जो अधिकतम पाया जा सकता है।

इनपुट

str = “00000”

आउटपुट

5

निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है

  • मुख्य () फ़ंक्शन में एक स्ट्रिंग बनाएं str बाइनरी स्ट्रिंग को स्टोर करने के लिए। साथ ही अनारे int गिरफ्तारी . घोषित करें [str.length()+1];

  • memset(arr,0,sizeof(arr)) का उपयोग करके arr[] =0 के सभी तत्वों को सेट करें;

  • j =1 से j तक लूप<=str.length()

  • जांचें कि क्या (मेमसेट (गिरफ्तारी, 0, आकार (गिरफ्तारी)), यदि ऐसा है तो एआर [जे] =अधिकतम (एआर [जे -1] -1, -1) डालें;

  • वरना arr[j]=max(arr[j-1]+1,1);

  • लूप के बाहर *max_element(arr+1,arr+str.length()+1);

    का उपयोग करके अधिकतम संख्या प्रिंट करें

उदाहरण

#include<bits/stdc++.h>
using namespace std;
int main(){
   string str = "10010110";
   int arr[str.length()+1];
   memset(arr,0,sizeof(arr));
   for(int j=1;j<=str.length();j++){
      if(str[j-1]=='1')
         arr[j]=max(arr[j-1]-1,-1);
      else
         arr[j]=max(arr[j-1]+1,1);
   }
   cout<<*max_element(arr+1,arr+str.length()+1);
   return 0;
}

आउटपुट

2

  1. सी++ में नोड और पूर्वज के बीच अधिकतम अंतर

    मान लीजिए कि हमारे पास एक बाइनरी ट्री की जड़ है, हमें अधिकतम मान V ज्ञात करना है जिसके लिए अलग-अलग नोड A और B मौजूद हैं जहाँ V =| A का मान - B का मान | और A, B का पूर्वज है। इसलिए यदि पेड़ जैसा है - तब आउटपुट 7 होगा। पूर्वज नोड अंतर [(8 - 3), (7 - 3), (8 - 1), (10-13)] की तरह हैं, उनमें से (8

  1. C++ स्ट्रिंग स्थिरांक और वर्ण स्थिरांक के बीच अंतर

    C++ में, सिंगल कोट्स में एक कैरेक्टर एक कैरेक्टर लिटरल होता है। यह चार प्रकार का है। उदाहरण के लिए, ए ASCII आधारित सिस्टम पर 97 के मान के साथ चार प्रकार का है। दोहरे उद्धरण चिह्नों में एक वर्ण या वर्णों की एक स्ट्रिंग एक स्ट्रिंग अक्षर का प्रतिनिधित्व करती है। यह प्रकार का है const char[] और स्ट्रि

  1. C++ में रिलेशनल ऑपरेटर(==) और std::string::compare() के बीच अंतर

    रिलेशनल ऑपरेटर ==और std::string::compare() के बीच केवल एक अंतर है। वह वापसी मूल्य है। आंतरिक रूप से, string::operator==() string::compare() using का उपयोग कर रहा है रिलेशनल ऑपरेटर(==) एक बूलियन लौटाता है जो यह दर्शाता है कि 2 तार बराबर हैं या नहीं, जबकि तुलना एक पूर्णांक देता है जो दर्शाता है कि तार