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

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

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

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

एल्गोरिदम (स्लाइडिंग विंडो)

  1. n := len(s)
  2. ans := 0, ones := 0, left := 0, right := 0
  3. while right < n:
    • यदि s[right] == "1", तो ones += 1
    • while (right - left + 1 - ones) > 1:
      • remove = s[left]
      • यदि remove == "1", तो ones -= 1
      • left += 1
    • ans = max(ans, right - left + 1)
    • right += 1
  4. ans लौटाएं

उदाहरण कार्यान्वयन

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))  # आउटपुट: 4

इनपुट

"1010110001"

आउटपुट

4
  1. Python में बाइनरी ट्री के सबसे लंबे लगातार पथ की लंबाई खोजने का प्रोग्राम Python में बाइनरी ट्री के सबसे लंबे लगातार पथ की लंबाई खोजने का प्रोग्राम

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

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

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

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

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