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

पायथन में वैध पैरेंथेसिस बनाने के लिए न्यूनतम हटाने का प्रोग्राम


मान लीजिए हमारे पास पैरेंथेसिस '(', ')' और लोअरकेस अंग्रेजी वर्णों वाली एक स्ट्रिंग s है। हमें न्यूनतम संख्या में पैरेंथेसिस ('(' या ')', किसी भी स्थिति से) हटाने हैं ताकि परिणामी पैरेंथेसिस स्ट्रिंग वैध हो और अंत में कोई भी वैध स्ट्रिंग वापस करें। यहां पैरेंथेसिस स्ट्रिंग वैध होती है जब निम्नलिखित सभी मानदंड पूरे होते हैं:

  • स्ट्रिंग खाली है और केवल लोअरकेस वर्ण रखती है, या
  • स्ट्रिंग को AB (A को B के साथ जोड़कर) के रूप में लिखा जा सकता है, जहां A और B वैध स्ट्रिंग्स हैं, या
  • स्ट्रिंग को (A) के रूप में लिखा जा सकता है, जहां A एक वैध स्ट्रिंग है।

उदाहरण के लिए, यदि इनपुट s = "m)n(o)p" है, तो आउटपुट "mn(o)p" होगा।

हल करने के चरण

  1. stack := एक नई सूची
  2. indexes := एक नया सेट
  3. i := 0
  4. s में प्रत्येक c के लिए:
    • यदि c == '(', तो i को stack में पुश करें।
    • अन्यथा यदि c == ')', तो:
      • यदि stack का आकार 0 है, तो i को indexes में डालें।
      • अन्यथा, stack से पॉप करें।
    • i := i + 1
  5. ret := खाली स्ट्रिंग
  6. indexes := indexes के साथ stack के सभी तत्वों को यूनियन करें।
  7. i को 0 से len(s) - 1 तक लूप चलाएं:
    • यदि i indexes में नहीं है, तो ret := ret + s[i]
  8. ret वापस करें।

उदाहरण

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

def solve(s):
    stack = []
    indexes = set()
    i = 0
    for c in s:
        if c == '(':
            stack.append(i)
        elif c == ')':
            if len(stack) == 0:
                indexes.add(i)
            else:
                stack.pop()
        i += 1
    ret = ''
    indexes = indexes.union(stack)
    for i in range(len(s)):
        if i not in indexes:
            ret += s[i]
    return ret

s = "m)n(o)p"
print(solve(s))

इनपुट

"m)n(o)p"

आउटपुट

mn(o)p
  1. - पायथन में एक संख्या को दूसरी संख्या में बदलने के लिए आवश्यक न्यूनतम संक्रियाओं की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक संख्या start और एक अन्य संख्या end है (start < end), हमें start को end में बदलने के लिए आवश्यक न्यूनतम संक्रियाओं की संख्या ढूंढनी है इन संक्रियाओं का उपयोग करके: 1 से बढ़ाएं 2 से गुणा करें उदाहरण के लिए, यदि इनपुट है start = 5, end = 11, तो आउटपुट होगा 2, क्योंकि हम 2 से ग

  1. - पायथन में एक स्ट्रिंग को दूसरी स्ट्रिंग का सबस्ट्रिंग बनाने के लिए आवश्यक न्यूनतम संक्रियाओं की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास दो स्ट्रिंग्स s और t हैं, हमें s के लिए आवश्यक न्यूनतम संक्रियाओं की मात्रा ढूंढनी है ताकि t, s का सबस्ट्रिंग बन जाए। अब, प्रत्येक संक्रिया में, हम s में किसी भी स्थिति को चुन सकते हैं और उस स्थिति के वर्ण को किसी अन्य वर्ण में बदल सकते हैं। उदाहरण के लिए, यदि इनपुट है s = abbpq

  1. - पायथन में पैरेंथेसिस को वैध बनाने के लिए न्यूनतम जोड़

    मान लीजिए हमारे पास ( और ) पैरेंथेसिस की एक स्ट्रिंग S है, हम किसी भी स्थिति पर न्यूनतम संख्या में पैरेंथेसिस जोड़ते हैं, ताकि परिणामी पैरेंथेसिस स्ट्रिंग वैध हो। एक पैरेंथेसिस स्ट्रिंग तभी वैध होती है जब - यह खाली स्ट्रिंग है इसे XY के रूप में लिखा जा सकता है (X को Y के साथ जोड़ा गया), जहां X और Y