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

पायथन में दो मान्य कोष्ठक स्ट्रिंग्स की अधिकतम नेस्टिंग गहराई

मान लीजिए कि हमारे पास एक स्ट्रिंग है, वह स्ट्रिंग एक वैध कोष्ठक स्ट्रिंग (वीपीएस के रूप में चिह्नित) है यदि और केवल तभी इसमें "(" और ")" वर्ण होते हैं, और यह इन गुणों को संतुष्ट करता है -

  • यह खाली स्ट्रिंग है, या

  • इसे AB के रूप में लिखा जा सकता है, जहाँ A और B VPS हैं, या

  • इसे (ए) के रूप में लिखा जा सकता है, जहां ए एक वीपीएस है।

हम नीचे दिए गए किसी भी वीपीएस एस की नेस्टिंग गहराई (एस) को भी परिभाषित कर सकते हैं -

  • गहराई ("") =0

  • गहराई (ए + बी) =अधिकतम गहराई (ए), गहराई (बी), जहां ए और बी वीपीएस हैं

  • गहराई ("(" + ए + ")") =1 + गहराई (ए), जहां ए एक वीपीएस है।

यदि हमारे पास VPS seq है, तो हमें इसे दो अलग-अलग अनुक्रमों A और B में विभाजित करना होगा, जैसे कि A और B VPS हैं (और A की लंबाई + B की लंबाई =seq की लंबाई)। अब अगर हम किसी ऐसे ए और बी को चुनते हैं जैसे कि अधिकतम (गहराई (ए), गहराई (बी)) न्यूनतम संभव मान है। फिर हमें एक उत्तर सरणी (seq की लंबाई की) ढूंढनी होगी जो A और B की ऐसी पसंद को एन्कोड करती है:उत्तर [i] =0 यदि seq [i] A का एक हिस्सा है, अन्यथा उत्तर [i] =1.

तो अगर इनपुट "()(())()" जैसा है, तो आउटपुट [1,1,1,0,1,0,1,1]

होगा

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

  • n :=seq की लंबाई, res :=0s की एक सरणी जिसकी लंबाई n है

  • c1, c2 :=0, 0

  • मैं के लिए 0 से n - 1 की सीमा में

    • अगर seq[i] ='('

      • यदि c1

    • अन्यथा

      • अगर c1> c2, तो c1 को 1 से घटाएं अन्यथा c2 को 1 से घटाएं और res[i]:=1

  • रिटर्न रेस

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

उदाहरण

class Solution(object):
   def maxDepthAfterSplit(self, seq):
      n = len(seq)
      res = [0] *n
      c1,c2= 0,0
      for i in range(n):
         if seq[i] == '(':
            if c1<c2:
               c1+=1
         else:
            c2+=1
            res[i]=1
      else:
         if c1>c2:
            c1-=1
         else:
            c2-=1
            res[i]=1
   return res
ob = Solution()
print(ob.maxDepthAfterSplit("()(())()"))

इनपुट

"()(())()"

आउटपुट

[1, 1, 1, 0, 1, 0, 1, 1]

  1. पायथन में बाइनरी ट्री की अधिकतम गहराई

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है। हमें उस वृक्ष की अधिकतम गहराई ज्ञात करनी है। एक पेड़ की अधिकतम गहराई नोड्स की अधिकतम संख्या है जो सबसे लंबे पथ का उपयोग करके जड़ से पत्ती तक पहुंचने के लिए ट्रैवर्स की जाती है। मान लीजिए पेड़ नीचे जैसा है। गहराई यहां 3 होगी। इसे हल करने के लिए, हम इन चरणो

  1. दो स्ट्रिंग्स से असामान्य शब्द खोजने के लिए पायथन प्रोग्राम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें दो तार दिए गए हैं, हमें दिए गए तार से असामान्य शब्द निकालने होंगे। आइए अब नीचे दिए गए कार्यान्वयन में समाधान देखें - उदाहरण # uncommon words def find(A, B):    # count    count = {}   &n

  1. पायथन में एक स्ट्रिंग में कनवर्ट करने के लिए दो तारों में कैसे शामिल हों?

    पायथन में 2 स्ट्रिंग्स को जोड़ने के लिए, हम कॉन्सटेनेशन ऑपरेटर, + का उपयोग कर सकते हैं। उदाहरण के लिए: str1 = "Hello" str2 = "World" str3 = str1 + str2 print str3 यह हमें आउटपुट देगा: HelloWorld हम कई स्ट्रिंग्स को एक साथ जोड़ने के लिए str.join(seq) का भी उपयोग कर सकते हैं। उदा