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

पायथन में दी गई स्ट्रिंग से सबसे लंबे वैध पैरेंथेसिस की लंबाई ज्ञात करने का प्रोग्राम


मान लीजिए हमारे पास एक स्ट्रिंग s है। इसमें केवल खुलने और बंद होने वाले पैरेंथेसिस हैं। हमें सबसे लंबे वैध (वेल-फॉर्म्ड) पैरेंथेसिस सबस्ट्रिंग की लंबाई ज्ञात करनी है। उदाहरण के लिए, यदि इनपुट है "))(())())", तो परिणाम 6 होगा, क्योंकि वैध स्ट्रिंग "(())()" है।

एल्गोरिदम (स्टैक आधारित)

  • स्टैक बनाएं और -1 डालें, ans := 0
  • i = 0 से len(s)-1 तक:
    • यदि s[i] == "(", तो i को स्टैक में डालें
    • अन्यथा:
      • यदि स्टैक खाली नहीं है और शीर्ष -1 नहीं है और s[stack[-1]] == "(", तो पॉप करें और ans = max(ans, i - stack[-1])
      • अन्यथा i को स्टैक में डालें
  • ans वापस करें

उदाहरण

class Solution(object):
    def solve(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.solve("))(())())"))

इनपुट

"))(())())"

आउटपुट

6
  1. - पायथन में सबसे लंबे पैलिंड्रोमिक सबस्ट्रिंग की लंबाई ढूंढने का प्रोग्राम

    मान लीजिए हमारे पास एक स्ट्रिंग S है। हमें S में सबसे लंबे पैलिंड्रोमिक सबस्ट्रिंग की लंबाई ढूंढनी है। हम मान रहे हैं कि स्ट्रिंग S की लंबाई 1000 है। उदाहरण के लिए, यदि स्ट्रिंग BABAC है, तो सबसे लंबा पैलिंड्रोमिक सबस्ट्रिंग BAB है और इसकी लंबाई 3 है।समाधान दृष्टिकोण (डायनामिक प्रोग्रामिंग)इस समस्या

  1. - Python में सबसे लंबा वैध पैरेंथेसिस

    मान लीजिए हमारे पास एक स्ट्रिंग है, जिसमें खुलने और बंद होने वाले पैरेंथेसिस हैं। हमें वैध (वेल-फॉर्म्ड) पैरेंथेसिस की सबसे लंबी लंबाई ढूंढनी है। इसलिए यदि इनपुट ))(())()) जैसा है, तो परिणाम 6 होगा, क्योंकि वैध स्ट्रिंग (())() है।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −एक स्टैक बनाएं, और -1

  1. - पायथन प्रोग्राम: दी गई स्ट्रिंग से सभी संभावित वैलिड IP एड्रेस जनरेट करना

    स्ट्रिंग दी गई है। स्ट्रिंग में केवल डिजिट्स हैं। हमारा कार्य सभी संभावित वैलिड IP एड्रेस कॉम्बिनेशन्स चेक करना है।यहां पहले हम स्ट्रिंग की लंबाई चेक करते हैं फिर . से स्प्लिट करते हैं। फिर हम . के विभिन्न कॉम्बिनेशन्स चेक करते हैं।उदाहरणInput: 255011123222 Its not a valid IP address. Input: 2550113