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

Python में अल्टरनेटिंग बाइनरी स्ट्रिंग के लिए न्यूनतम परिवर्तन खोजें

मान लीजिए हमारे पास एक बाइनरी स्ट्रिंग s है। एक ऑपरेशन पर विचार करें जहां हम एक बिट फ्लिप कर सकते हैं। स्ट्रिंग s को अल्टरनेटिंग स्ट्रिंग कहा जाता है यदि कोई दो आसन्न कैरेक्टर समान नहीं हैं। हमें s को अल्टरनेटिंग बनाने के लिए आवश्यक न्यूनतम ऑपरेशन्स की संख्या ढूंढनी है।

इसलिए, यदि इनपुट है: s = "11100011", तो आउटपुट 3 होगा क्योंकि यदि हम पोजीशन 1, 4 और 7 पर बिट्स फ्लिप करते हैं, तो यह "10101010" बन जाएगा, फिर सभी अल्टरनेटिंग हैं।

हल करने के चरण

  1. change := 0
  2. even_1 := 0, even_0 := 0
  3. odd_1 := 0, odd_0 := 0
  4. i को 0 से s के आकार - 1 तक के लिए:
    • यदि i सम है:
      • यदि s[i] == '1', तो even_1++
      • अन्यथा even_0++
    • अन्यथा:
      • यदि s[i] == '1', तो odd_1++
      • अन्यथा odd_0++
  5. यदि (even_1 + odd_0) > (even_0 + odd_1), तो change := even_0 + odd_1
  6. अन्यथा, change := even_1 + odd_0
  7. change वापस करें

उदाहरण (Python)

def solve(s):
    change = 0
    even_1 = 0
    even_0 = 0
    odd_1 = 0
    odd_0 = 0
    for i in range(len(s)):
        if i % 2 == 0:
            if s[i] == '1':
                even_1 += 1
            else:
                even_0 += 1
        else:
            if s[i] == '1':
                odd_1 += 1
            else:
                odd_0 += 1
    if (even_1 + odd_0) > (even_0 + odd_1):
        change = even_0 + odd_1
    else:
        change = even_1 + odd_0
    return change

s = "11100011"
print(solve(s))

इनपुट

"11100011"

आउटपुट

3
  1. Python से बाइनरी ग्रिड में मेजर डायगोनल के ऊपर ज़ीरोज़ के लिए मिनिमम स्वैप्स कैसे ढूंढें? Python से बाइनरी ग्रिड में मेजर डायगोनल के ऊपर ज़ीरोज़ के लिए मिनिमम स्वैप्स कैसे ढूंढें?

    n×n बाइनरी मैट्रिक्स में एडजेसेंट रो स्वैप्स से मेजर डायगोनल के ऊपर सभी एलिमेंट्स 0 करने के लिए मिनिमम स्वैप्स ढूंढें। एल्गोरिदम प्रत्येक रो के लिए राइटमोस्ट 1 की पोजीशन ढूंढें → m[i] = n - j - 1 (डायगोनल से दूरी)। ग्रीडी: i=0 से n-1, ऐसी रो ढूंढें जिसका = n-i-1 हो (यानी डायगोनल के ऊपर 1 न हो)। उसे

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

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

  1. पायथन प्रोग्राम: संख्या के फैक्टर्स का न्यूनतम योग ढूंढें पायथन प्रोग्राम: संख्या के फैक्टर्स का न्यूनतम योग ढूंढें

    इस लेख में, हम नीचे दिए गए प्रॉब्लम स्टेटमेंट के समाधान के बारे में सीखेंगे: प्रॉब्लम स्टेटमेंट एक नंबर इनपुट दिए जाने पर, दी गई संख्या के फैक्टर्स का न्यूनतम योग ढूंढें। यहां हम सभी फैक्टर्स और उनके संबंधित योग की गणना करेंगे और फिर उनमें से न्यूनतम ढूंढेंगे। तो संख्या के गुणनफल का न्यूनतम योग ढू