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

पायथन का उपयोग करके कोष्ठक स्ट्रिंग को संतुलित करने के लिए न्यूनतम सम्मिलन खोजने का कार्यक्रम

मान लीजिए कि हमारे पास कोष्ठक '(' और ')' खोलने और बंद करने के साथ एक स्ट्रिंग है। हम कह सकते हैं कि एक कोष्ठक स्ट्रिंग संतुलित होती है जब -

  • कोई भी बायां कोष्ठक '(' में दो लगातार दाएं कोष्ठक होते हैं '))'।

  • एक बायां कोष्ठक '(' दो क्रमागत दायें कोष्ठक से पहले जाना चाहिए))'।

तो उदाहरण के लिए, "())", "())(())))" संतुलित हैं लेकिन ")()", "()))" नहीं हैं। यदि हमारे पास ऐसी स्ट्रिंग है, तो हमें स्ट्रिंग को संतुलित करने के लिए कोष्ठकों की संख्या (खोलना या बंद करना) गिनना होगा।

इसलिए, यदि इनपुट s ="(()))))" जैसा है, तो आउटपुट 1 होगा क्योंकि यदि हम इसे विभाजित करते हैं, तो हम "(())))) प्राप्त कर सकते हैं, इसलिए हमें आवश्यकता है स्ट्रिंग को संतुलित करने के लिए "( ()) ())))" बनाने के लिए एक बायां कोष्ठक।

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

  • :=0, n:=s का आकार

  • रिट:=0, मैं :=0

  • जबकि मैं

    • अगर s[i] '(' के समान है, तो

  • :=ओ + 1

    • अन्यथा,

      • अगर i + 1

        • अगर o 0 है, तो

          • रिट:=रिट + 1

        • अन्यथा,

  • :=ओ - 1

    • मैं :=मैं + 1

    • अन्यथा,

      • रिट:=रिट + 1

      • अगर o 0 है, तो

        • रिट:=रिट + 1

      • अन्यथा,

  • :=ओ - 1

    • मैं :=मैं + 1

  • रिटर्न रिट + 2 * ओ

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


उदाहरण

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 = "(())))))"
print(solve(s))

इनपुट

"(())))))"

आउटपुट

3

  1. पायथन का उपयोग करके सभी नोड्स तक पहुंचने के लिए न्यूनतम संख्या में कोने खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक निर्देशित चक्रीय ग्राफ है, जिसमें n कोने हैं और नोड्स 0 से n-1 तक गिने जाते हैं, ग्राफ को किनारे की सूची द्वारा दर्शाया जाता है, जहां किनारों [i] =(यू, वी) नोड यू से एक निर्देशित किनारे का प्रतिनिधित्व करता है। नोड वी। हमें शिखर का सबसे छोटा सेट ढूंढना है जिससे ग्राफ में सभ

  1. पायथन का उपयोग करके n-वें बाइनरी स्ट्रिंग में Kth बिट खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास दो सकारात्मक मान n और k हैं, अब हम निम्नलिखित नियमों का उपयोग करके एक बाइनरी स्ट्रिंग S_n बना सकते हैं - S_1 =0 1 के लिए यहां रिवर्स (एक्स) उलटा स्ट्रिंग एक्स देता है, और इनवर्ट (एक्स) एक्स में सभी बिट्स को फ़्लिप करता है। ये ऐसे चार तार के उदाहरण हैं S_1 =0 S_

  1. पायथन का उपयोग करके बाइनरी ग्रिड की व्यवस्था करने के लिए न्यूनतम स्वैप खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक n x n बाइनरी मैट्रिक्स है। हम इस पर एक ऑपरेशन कर सकते हैं जैसे, एक चरण में हम दो आसन्न पंक्तियों का चयन करते हैं और उन्हें स्वैप करते हैं। हमें आवश्यक न्यूनतम स्वैप की संख्या गिननी होगी, ताकि मैट्रिक्स के प्रमुख विकर्ण के ऊपर सभी नोड्स 0 हों। यदि ऐसा कोई समाधान नहीं है, तो