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

पायथन में डिस्टिंक्ट कैरेक्टर्स की सबसे छोटी सबसीक्वेंस


मान लीजिए हमारे पास एक टेक्स्ट है, हमें टेक्स्ट की लेक्सिकोग्राफिकली सबसे छोटी सबसीक्वेंस ढूंढनी है जिसमें टेक्स्ट के सभी डिस्टिंक्ट कैरेक्टर्स ठीक एक बार हों। इसलिए यदि इनपुट \"cdadabcc\" जैसा है, तो आउटपुट \"adbc\" होगा।

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

  • एक स्टैक st परिभाषित करें, दो मैप last_o और considered, वे प्रारंभ में खाली हैं
  • i को टेक्स्ट की लंबाई - 1 से 0 तक डाउन टू रेंज में
    • यदि text[i] last_o में मौजूद नहीं है -
      • last_o[text[i]] := i
      • considered[text[i]] := false
    • i := 0
    • जब तक i < टेक्स्ट की लंबाई
      • यदि स्टैक में कोई एलिमेंट नहीं है
        • text[i] को स्टैक में पुश करें
        • considered[text[i]] := true
        • i को 1 से बढ़ाएं
      • अन्यथा स्टैक टॉप > text[i] और considered[text[i]] false है
        • यदि last_o[स्टैक टॉप] > i
          • considered[स्टैक टॉप एलिमेंट] := false
          • स्टैक से पॉप करें
        • अन्यथा
          • considered[tex[i]] = true
          • text[i] को स्टैक में इन्सर्ट करें
          • i को 1 से बढ़ाएं
      • अन्यथा जब स्टैक टॉप एलिमेंट < text[i] और considered[text[i]] = false
        • text[i] को स्टैक में इन्सर्ट करें
        • considered[text[i]] := true
        • i को 1 से बढ़ाएं
      • अन्यथा i को 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]

    इनपुट

    \"cdadabcc\"

    आउटपुट

    \"adbc\"

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

    मान लीजिए हमारे पास एक पूर्णांक सरणी है जो हिस्टोग्राम की ऊंचाई दर्शाती है। प्रत्येक बार की इकाई चौड़ाई है। हमें निम्नानुसार सबसे बड़े क्षेत्र का आयत ढूंढना है −इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −स्टैक बनाएं, i := 0, ans := 0 सेट करेंजब तक i < heights का आकार, तबयदि स्टैक में 0 तत्व हैं

  1. Python में वर्षा जल संग्रहण Python में वर्षा जल संग्रहण

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

  1. - पायथन में ascii() फ़ंक्शन

    ASCII, American Standard Code for Information Interchange का संक्षिप्त रूप है। यह एक वर्ण एन्कोडिंग मानक है। उदाहरण के लिए अंग्रेजी वर्णमाला A का ASCII मान 65 है। पायथन किसी ऑब्जेक्ट का प्रिंट करने योग्य प्रतिनिधित्व प्राप्त करने के लिए यह फ़ंक्शन प्रदान करता है। यह एक पैरामीटर लेता है जो एक ऑब्जेक