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

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

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

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

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

  • ट्रैव () फ़ंक्शन को परिभाषित करें। इसमें s, dir, start, close:=close, ans:=ans

    . लगेगा
    • अंत:="(" अगर डीआईआर -1 के समान है, अन्यथा ")"

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

    • जबकि प्रारंभ

      • अगर s[शुरू] दूसरे के समान है, तो

        • ट्रैव (एस, -डीआईआर, बंद करें [अन्य, शुरू करें] - डीआईआर)

        • प्रारंभ:=बंद करें [अन्य, प्रारंभ करें] + डीआईआर

      • अन्यथा,

        • उत्तर के अंत में s[start] डालें

        • प्रारंभ:=प्रारंभ + डीआईआर

  • मुख्य कार्य से, निम्न कार्य करें -

  • उत्तर :=एक नई सूची

  • बंद करें:=एक नया नक्शा जिसमें कुंजियाँ हैं ")" और "(" शुरू में मान दो खाली नक्शे हैं

  • स्टैक :=एक नई सूची

  • प्रत्येक अनुक्रमणिका I और मान c के लिए s, करें

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

      • मुझे स्टैक में पुश करें

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

      • o:=स्टैक के ऊपर, फिर स्टैक से पॉप करें

      • बंद करें [")", i] :=o

      • बंद करें ["(", ओ]:=मैं

  • ट्रैव(एस, 1, 0)

  • वापसी उत्तर रिक्त स्ट्रिंग के साथ जुड़ गया

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

उदाहरण

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. एनाग्राम सबस्ट्रिंग सर्च के लिए पायथन प्रोग्राम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - एक टेक्स्ट और एक पैटर्न को देखते हुए, हमें टेक्स्ट में पैटर्न और उसके क्रमपरिवर्तन (या विपर्यय) की सभी घटनाओं को प्रिंट करना होगा। आइए अब नीचे दिए गए कार्यान्वयन में समाधान देखें - उदाहरण # maximum value MAX = 300 #