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

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


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

उदाहरण

इनपुट

str = "10010110"

आउटपुट

2

व्याख्या

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

इनपुट

str = "00000"

आउटपुट

5

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

  • main() फ़ंक्शन में बाइनरी स्ट्रिंग संग्रहीत करने के लिए एक स्ट्रिंग str बनाएं। साथ ही एक सरणी int arr[str.length()+1] घोषित करें।
  • memset(arr,0,sizeof(arr)) का उपयोग करके arr[] के सभी तत्व 0 पर सेट करें।
  • j = 1 से j <= str.length() तक लूप करें।
  • जांचें कि क्या (memset(arr,0,sizeof(arr)), यदि हां तो arr[j]=max(arr[j-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. C++ में नोड और पूर्वज के बीच अधिकतम अंतर C++ में नोड और पूर्वज के बीच अधिकतम अंतर

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

  1. - C++ स्ट्रिंग कॉन्स्टेंट्स और कैरेक्टर कॉन्स्टेंट्स में अंतर

    C++ में, सिंगल कोट्स में एक कैरेक्टर एक कैरेक्टर लिटरल है। इसका प्रकार char है। उदाहरण के लिए, a ASCII आधारित सिस्टम पर मान 97 के साथ char प्रकार का है। डबल कोट्स में एक कैरेक्टर या कैरेक्टर्स की स्ट्रिंग एक स्ट्रिंग लिटरल दर्शाती है। इसका प्रकार const char[] है और यह स्ट्रिंग की लंबाई + 1 के आकार

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

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