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

पायथन में एक 0-फ्लिप के बाद बाइनरी स्ट्रिंग में 1s के साथ सबसे लंबे समय तक सबस्ट्रिंग की लंबाई खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक बाइनरी स्ट्रिंग है। हमें ज़्यादा से ज़्यादा एक "0" से "1" पर फ़्लिप करने की अनुमति है, हमें 1s के सबसे लंबे सन्निहित विकल्प की लंबाई ज्ञात करनी होगी।

इसलिए, यदि इनपुट s ="1010110001" जैसा है, तो आउटपुट 4 होगा, जैसे कि हम इंडेक्स 3 पर मौजूद शून्य को फ्लिप करते हैं, तो हमें "1011110001" स्ट्रिंग मिलती है, यहां 1s के सबसे लंबे सबस्ट्रिंग की लंबाई 4 है। ।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • n :=आकार का
  • उत्तर:=0, वाले:=0, बाएँ:=0, दाएँ:=0
  • दाएं
  • यदि s[दाएं] "1" के समान है, तो
    • वाले :=वाले + 1
  • जबकि दाएं - बाएं + 1 - वाले> 1, करें
    • निकालें :=s[बाएं]
    • यदि निकालें "1" के समान है, तो
      • वाले :=वाले - 1
    • बाएं:=बाएं + 1
  • उत्तर :=अधिकतम उत्तर और (दाएं-बाएं + 1)
  • दाएं:=दाएं + 1
  • वापसी उत्तर
  • उदाहरण

    आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

    def solve(s):
       n = len(s)
       ans = ones = left = right = 0
       while right < n:
          if s[right] == "1":
             ones += 1
          while right - left + 1 - ones > 1:
             remove = s[left]
             if remove == "1":
                ones -= 1
             left += 1
          ans = max(ans, right - left + 1)
          right += 1
       return ans
    
    s = "1010110001"
    print(solve(s))

    इनपुट

    "1010110001"

    आउटपुट

    4

    1. अजगर में एक बाइनरी ट्री के सबसे लंबे क्रमागत पथ की लंबाई ज्ञात करने का कार्यक्रम

      मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें बाइनरी ट्री में सबसे लंबा रास्ता खोजना होगा। तो, अगर इनपुट पसंद है तो आउटपुट 5 होगा क्योंकि लगातार सबसे लंबा क्रम [2, 3, 4, 5, 6] है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - यदि रूट रिक्त है, तो वापसी 0 मैक्सपाथ:=0 एक फंक्शन हेल्पर () को प

    1. पायथन में एक बाइनरी ट्री के सबसे लंबे वैकल्पिक पथ की लंबाई खोजने का कार्यक्रम

      मान लीजिए कि हमारे पास एक बाइनरी ट्री है, हमें सबसे लंबा रास्ता खोजना है जो बाएं और दाएं बच्चे और नीचे जाने के बीच वैकल्पिक हो। तो, अगर इनपुट पसंद है तो आउटपुट 5 होगा क्योंकि वैकल्पिक पथ [2, 4, 5, 7, 8] है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे: यदि रूट रिक्त है, तो वापसी 0 एक फ़ंक्

    1. पायथन में एक स्वैप के साथ लेक्सिकोग्राफिक रूप से सबसे छोटी स्ट्रिंग खोजने का कार्यक्रम

      मान लीजिए कि हमारे पास एक स्ट्रिंग s है, तो हमें लेक्सिकोग्राफ़िक रूप से सबसे छोटी स्ट्रिंग ढूंढनी होगी जो कि दी जा सकती है यदि हम दिए गए स्ट्रिंग s में दो वर्णों के बीच अधिकतम एक स्वैप कर सकते हैं। इसलिए, यदि इनपुट zyzx जैसा है, तो आउटपुट xyzz होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -