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

पायथन में सबसे लंबे समय तक मान्य कोष्ठक


मान लीजिए कि हमारे पास कोष्ठक खोलने और बंद करने के साथ एक स्ट्रिंग है। हमें वैध (अच्छी तरह से गठित) कोष्ठकों की सबसे लंबी लंबाई ज्ञात करनी है। इसलिए यदि इनपुट "))(())())" जैसा है, तो परिणाम 6 होगा, क्योंकि वैध स्ट्रिंग "(())()" है।

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

  • एक स्टैक बनाएं, और -1 डालें, उत्तर सेट करें:=0

  • मैं के लिए 0 से लेकर ढेर की लंबाई तक - 1

    • अगर s[i] कोष्ठक खोल रहा है, तो i को स्टैक में डालें

    • अन्यथा

      • यदि स्टैक खाली नहीं है और स्टैक का शीर्ष -1 नहीं है और s[stack top] कोष्ठक खोल रहा है, तो

        • स्टैक से शीर्ष तत्व

        • उत्तर:=अधिकतम उत्तर और i - स्टैक टॉप

      • अन्यथा i को स्टैक में डालें

  • वापसी उत्तर

उदाहरण

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

class Solution(object):
   def longestValidParentheses(self, s):
      stack = [-1]
      ans = 0
      for i in range(len(s)):
         if s[i] == "(":
            stack.append(i)
         else:
            if stack and stack[-1]!=-1 and s[stack[-1]] == "(":
               stack.pop()
               ans = max(ans,i - stack[-1])
            else:
            stack.append(i)
      return ans
ob = Solution()
print(ob.longestValidParentheses("))(())())"))

इनपुट

"))(())())"

आउटपुट

6

  1. पायथन में न्यूनतम ढेर

    यहां हम देखेंगे कि एक स्टैक कैसे बनाया जाता है, जो निरंतर समय में पुश, पॉप, टॉप और न्यूनतम तत्व को पुनः प्राप्त कर सकता है। तो फ़ंक्शन पुश (x), पॉप (), शीर्ष () और getMin () होंगे इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - न्यूनतम तत्व द्वारा स्टैक को इनफिनिटी के रूप में प्रारंभ करें पुश ऑपर

  1. पायथन में मान्य एनाग्राम

    विपर्यय मूल रूप से किसी दिए गए स्ट्रिंग या पैटर्न के सभी क्रमपरिवर्तन हैं। यह पैटर्न खोज एल्गोरिथ्म थोड़ा अलग है। इस मामले में, न केवल सटीक पैटर्न की खोज की जाती है, यह पाठ में दिए गए पैटर्न की सभी संभावित व्यवस्थाओं को खोजता है। तो अगर इनपुट एनाग्राम और नागरम हैं, तो वे विपर्यय हैं, लेकिन बिल्ली और

  1. पायथन में मान्य पैलिंड्रोम

    मान लीजिए कि हमारे पास अल्फ़ान्यूमेरिक मानों और प्रतीकों वाली एक स्ट्रिंग है। लोअर केस और अपरकेस अक्षर भी हैं। हमें यह जांचना होगा कि स्ट्रिंग केवल लोअरकेस अक्षरों पर विचार करके एक पैलिंड्रोम बना रही है या नहीं (अपरकेस को लोअर केस में बदल दिया जाएगा), कॉमा, स्पेस जैसे अन्य प्रतीकों को अनदेखा कर दिया