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

पायथन में विशिष्ट वर्णों का सबसे छोटा अनुक्रम

मान लीजिए कि हमारे पास एक टेक्स्ट है, हमें टेक्स्ट के लेक्सिकोग्राफ़िक रूप से सबसे छोटे अनुक्रम को ढूंढना है जिसमें टेक्स्ट के सभी अलग-अलग वर्ण बिल्कुल एक बार होते हैं। तो अगर इनपुट “cdadabcc” जैसा है, तो आउटपुट “adbc” होगा।

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

  • एक स्टैक सेंट को परिभाषित करें, दो नक्शे last_o और माना जाता है, वे शुरू में खाली हैं
  • पाठ्यक्रम की लंबाई में i के लिए - 1 से 0 तक
    • अगर टेक्स्ट[i] last_o में मौजूद नहीं है -
      • last_o[text[i]] :=i
      • माना जाता है[पाठ[i]]:=झूठा
    • मैं :=0
    • जबकि मैं <पाठ की लंबाई
      • यदि स्टैक में कोई तत्व नहीं है
        • पाठ को पुश करें[i] स्टैक में
        • माना जाता है[पाठ[i]] :=सच
        • मैं 1 से बढ़ाएँ
      • अन्यथा स्टैक टॉप> टेक्स्ट[i] और माना जाता है[text[i]] गलत है
        • अगर last_o[स्टैक टॉप]> i
          • माना जाता है [स्टैक टॉप एलिमेंट] :=असत्य
          • स्टैक से पॉप
        • अन्यथा
          • माना जाता है[tex[i]] =सच
          • पाठ सम्मिलित करें[i] स्टैक में
          • मैं 1 से बढ़ाएँ
      • अन्यथा जब स्टैक शीर्ष तत्व
      • पाठ सम्मिलित करें[i] स्टैक में
      • माना जाता है[पाठ[i]] :=सच
      • मैं 1 से बढ़ाएँ
    • अन्यथा 1 से बढ़ाएँ
  • स्टैक के सभी तत्वों को उल्टे क्रम में स्ट्रिंग के रूप में लौटाएं
  • आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

    उदाहरण

    class Solution(object):
       def smallestSubsequence(self, text):
          """
          :type text: str
          :rtype: str
          """
          stack = []
          last_o = {}
          considered = {}
          for i in range(len(text)-1,-1,-1):
             if text[i] not in last_o:
                last_o[text[i]] = i
                considered[text[i]] = False
          print(last_o)
          i = 0
          while i < len(text):
             print(stack,i,text[i])
             if len(stack) == 0:
                stack.append(text[i])
                considered[text[i]] = True
                i+=1
             elif stack[-1]>text[i] and considered[text[i]] == False:
                if last_o[stack[-1]]>i:
                   considered[stack[-1]]=False
                   stack.pop()
                else:
                   considered[text[i]] = True
                   stack.append(text[i])
                   i+=1
             elif stack[-1]<text[i] and considered[text[i]] == False:
                stack.append(text[i])
                considered[text[i]] = True
                i+=1
             else:
                i+=1
          return "".join(i for i in stack)

    इनपुट

    "cdadabcc"

    आउटपुट

    "adbc"

    1. पायथन में हिस्टोग्राम में सबसे बड़ा आयत

      मान लें कि हमारे पास एक पूर्णांक सरणी है जो हिस्टोग्राम की ऊंचाई का प्रतिनिधित्व कर रही है। प्रत्येक बार में इकाई चौड़ाई होती है। हमें इस प्रकार सबसे बड़ा क्षेत्रफल आयत ज्ञात करना है - इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - स्टैक बनाएं, मैं सेट करें:=0, उत्तर:=0 जबकि मैं <ऊंचाई का

    1. पायथन में वर्षा जल को फंसाना

      मान लीजिए कि हमारे पास n गैर-ऋणात्मक पूर्णांकों की एक सरणी है। ये एक ऊंचाई के नक्शे का प्रतिनिधित्व कर रहे हैं जहां प्रत्येक बार की चौड़ाई 1 है, हमें गणना करनी होगी कि बारिश के बाद यह कितना पानी फंसा सकता है। तो नक्शा इस तरह होगा - यहां हम देख सकते हैं कि 6 नीले बॉक्स हैं, इसलिए आउटपुट 6 होगा। इ

    1. असीसी () अजगर में

      ASCII को अमेरिकन स्टैंडर्ड कोड फॉर इंफॉर्मेशन इंटरचेंज से संक्षिप्त किया गया है। यह एक वर्ण एन्कोडिंग मानक है। उदाहरण के लिए अंग्रेजी वर्णमाला A का ASCII मान 65 है। पायथन किसी वस्तु का मुद्रण योग्य प्रतिनिधित्व प्राप्त करने के लिए यह फ़ंक्शन प्रदान करता है। यह एक पैरामीटर लेता है जो एक वस्तु है जो ए