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

Python से पैरेंथेसिस स्ट्रिंग को बैलेंस करने के लिए मिनिमम इंसर्शन्स कैसे ढूंढें?

स्ट्रिंग बैलेंस है अगर हर '(' के लिए दो कंसेक्यूटिव '))' हों। मिनिमम इंसर्शन्स (ओपनिंग/क्लोजिंग) काउंट करें।

एल्गोरिदम

  • o = अनमैच्ड ओपनिंग काउंट, ret = इंसर्शन्स काउंट।
  • स्ट्रिंग स्कैन करें: '(' मिले तो o++।
  • ')' मिले: अगर अगला भी ')' है तो पेयर प्रोसेस करें (o-- या ret++ अगर o=0)।
  • सिंगल ')' मिले: ret++ और o-- या ret++।
  • अंत में ret + 2*o रिटर्न करें (बचे हुए ओपनिंग के लिए दो-दो क्लोजिंग)।

उदाहरण कोड


def solve(s):
    o = 0
    n = len(s)
    ret = 0
    i = 0
    while i < n:
        if s[i] == '(':
            o += 1
        else:
            if i + 1 < n and s[i + 1] == ')':
                if not o:
                    ret += 1
                else:
                    o -= 1
                i += 1
            else:
                ret += 1
                if not o:
                    ret += 1
                else:
                    o -= 1
        i += 1
    return ret + 2 * o

# टेस्ट: s="(())))))" -> आउटपुट: 3

इनपुट/आउटपुट

इनपुट: "(())))))"
आउटपुट: 3

  1. Python से DAG में सभी नोड्स तक पहुंचने के लिए मिनिमम वर्टेक्स कैसे ढूंढें? Python से DAG में सभी नोड्स तक पहुंचने के लिए मिनिमम वर्टेक्स कैसे ढूंढें?

    डायरेक्टेड एसाइक्लिक ग्राफ (DAG) में जिन वर्टेक्सेज़ का इन-डिग्री 0 है, उनसे सभी नोड्स पहुंचे जा सकते हैं। एल्गोरिदम सभी नोड्स का सेट बनाएं (0 से n-1)। सभी एजेज़ के डेस्टिनेशन नोड्स (v) का सेट बनाएं। सोर्स नोड्स = सभी नोड्स - डेस्टिनेशन नोड्स (यानी इन-डिग्री 0 वाले)। यही मिनिमम वर्टेक्स सेट है। उद

  1. - Python से n-वें बाइनरी स्ट्रिंग में K-वां बिट कैसे ढूंढें?

    रिकर्सिव नियम S₁=0, Sᵢ=Sᵢ₋₁ + 1 + reverse(invert(Sᵢ₋₁)) से बाइनरी स्ट्रिंग बनाकर K-वां बिट ढूंढें। एल्गोरिदम अगर k=1 तो 0 रिटर्न। दो ऐरे arr (0 से शुरू) और arr2 (1 से शुरू) मेंटेन करें। जब तक len(arr): दोनों ऐरे एक्सपैंड करें: arr = arr + [1] + arr2, arr2 = arr + [0] + arr2। arr[k-1] रिटर्न करें।

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

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