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

पायथन में ब्रैकेट के भीतर संलग्न सबस्ट्रिंग को रिवर्स करने का प्रोग्राम

मान लीजिए, हमारे पास एक लोअरकेस स्ट्रिंग s है जिसमें अक्षर और पैरेंथेसिस "(" और ")" हैं। हमें पैरेंथेसिस के भीतर संलग्न हर स्ट्रिंग को रिकर्सिव तरीके से रिवर्स करना है और परिणामी स्ट्रिंग वापस करनी है।

इसलिए, यदि इनपुट s = "back(aps)ce" है, तो आउटपुट "backspace" होगा।

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

  • trav() नामक एक फ़ंक्शन परिभाषित करें। यह s, dir, start, close:= close, ans:= ans लेगा

    • end := "(" यदि dir -1 के समान है, अन्यथा ")"

    • other := "(" यदि end ")" के समान है, अन्यथा ")"

    • जब तक start < s का आकार, और s[start] end के समान नहीं है, करें:

      • यदि s[start] other के समान है, तो:

        • trav(s, -dir, close[other, start] - dir)

        • start := close[other, start] + dir

      • अन्यथा,

        • ans के अंत में s[start] डालें

        • start := start + dir

  • मुख्य फ़ंक्शन से, निम्नलिखित करें:

  • ans := एक नई सूची

  • close := एक नया मैप जिसमें कुंजी ")" और "(" हैं, प्रारंभ में मान दो खाली मैप हैं

  • stack := एक नई सूची

  • स्ट्रिंग s में प्रत्येक इंडेक्स I और मान c के लिए, करें:

    • यदि c "(" के समान है, तो:

      • i को stack में पुश करें

    • अन्यथा जब c ")" के समान है, तो:

      • o := stack का शीर्ष, फिर stack से पॉप करें

      • close[")", i] := o

      • close["(", o] := i

  • trav(s, 1, 0)

  • खाली स्ट्रिंग के साथ जुड़े ans को वापस करें

उदाहरण

class Solution:
    def solve(self, s):
        ans = []
        close = {")": {}, "(": {}}
        stack = []
        for i, c in enumerate(s):
            if c == "(":
                stack.append(i)
            elif c == ")":
                o = stack.pop()
                close[")"][i] = o
                close["("][o] = i
        def trav(s, dir, start, close=close, ans=ans):
            end = "(" if dir == -1 else ")"
            other = "(" if end == ")" else ")"
            while start < len(s) and s[start] != end:
                if s[start] == other:
                    trav(s, -dir, close[other][start] - dir)
                    start = close[other][start] + dir
                else:
                    ans.append(s[start])
                    start += dir
        trav(s, 1, 0)
        return "".join(ans)

ob = Solution()
print(ob.solve("back(aps)ce"))

इनपुट

"back(aps)ce"

आउटपुट

backspace
  1. पायथन में निर्देशित ग्राफ को उलटने का प्रोग्राम पायथन में निर्देशित ग्राफ को उलटने का प्रोग्राम

    मान लीजिए हमारे पास एक निर्देशित ग्राफ है, हमें इसका उल्टा ढूंढना है ताकि यदि एक किनारा u से v तक जाता है, तो अब यह v से u तक जाए। यहां इनपुट एक एडजेंसी सूची होगी, और यदि n नोड्स हैं, तो नोड्स (0, 1, ..., n-1) होंगे।इसलिए, यदि इनपुट इस तरह हैतो आउटपुट होगाइसे हल करने के लिए, हम इन चरणों का पालन करें

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

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

  1. पायथन प्रोग्राम: एनाग्राम सबस्ट्रिंग खोज पायथन प्रोग्राम: एनाग्राम सबस्ट्रिंग खोज

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक टेक्स्ट और एक पैटर्न दिया गया है, हमें पैटर्न और उसके क्रमपरिवर्तन (या एनाग्राम) की सभी घटनाओं को टेक्स्ट में प्रिंट करना है। उदाहरण # अधिकतम मान MAX = 300 # तुलना def compare(arr1, arr2): for i in range(MAX):