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

पायथन में सूची के प्रत्येक पार्टीशन का आकार ज्ञात करने का प्रोग्राम जहां प्रत्येक अक्षर अधिकतम एक टुकड़े में आता है


मान लीजिए हमारे पास एक लोअरकेस स्ट्रिंग s है, हम s को यथासंभव अधिक से अधिक टुकड़ों में विभाजित कर सकते हैं ताकि प्रत्येक अक्षर अधिकतम एक टुकड़े में आए और पार्टीशन के आकारों को सूची के रूप में वापस करें।

उदाहरण के लिए, यदि इनपुट है s = "momoplaykae", तो आउटपुट [4, 1, 1, 4, 1] होगा, क्योंकि स्ट्रिंग ["momo", "p", "l", "ayka", "e"] में विभाजित होती है।

एल्गोरिदम

  • count := s में प्रत्येक वर्ण की घटनाओं वाला मैप
  • out := नई सूची, stk := खाली स्टैक, length := 0
  • s के प्रत्येक char के लिए:
    • count[char]--, length++
    • जब तक count[char] != 0 या stk खाली नहीं है:
      • यदि count[char] != 0, तो char को stk में डालें और ब्रेक करें
      • यदि stk खाली नहीं है और count[stk[-1]] == 0, तो stk से पॉप करें
      • अन्यथा ब्रेक करें
    • यदि stk खाली है और count[char] == 0, तो length को out में जोड़ें और length = 0 करें
  • out वापस करें

उदाहरण

from collections import Counter
class Solution:
    def solve(self, s):
        count = Counter(s)
        out = []
        stk = []
        length = 0
        for char in s:
            count[char] -= 1
            length += 1
            while count[char] != 0 or stk:
                if count[char] != 0:
                    stk.append(char)
                    break
                if stk and count[stk[-1]] == 0:
                    stk.pop()
                else:
                    break
            if not stk and count[char] == 0:
                out += [length]
                length = 0
        return out

ob = Solution()
s = "momoplaykae"
print(ob.solve(s))

इनपुट

"momoplaykae"

आउटपुट

[4, 1, 1, 4, 1]
  1. पायथन प्रोग्राम: लिस्ट का संचयी योग ज्ञात करें पायथन प्रोग्राम: लिस्ट का संचयी योग ज्ञात करें

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक लिस्ट दी गई है, हमें संचयी योग के साथ एक लिस्ट बनानी है। उदाहरण # संचयी योग def Cumulative(l): new = [] cumsum = 0 for element in l: cumsum += element new.append(cumsum) return new # ड्राइवर

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

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट लिस्ट इनपुट दिए जाने पर, हमें दी गई लिस्ट में सबसे बड़ी संख्या ढूंढने की आवश्यकता है। यहां हम दो दृष्टिकोणों पर चर्चा करेंगे: सॉर्टिंग तकनीकों का उपयोग करना बिल्ट-इन max() फंक्शन का

  1. - Python में सूची का आकार ढूंढना

    सूची Python में एक संग्रह डेटा प्रकार है। सूची में तत्व परिवर्तनशील होते हैं और तत्वों से जुड़ा कोई विशिष्ट क्रम नहीं होता है। इस लेख में हम देखेंगे कि Python में सूची की लंबाई कैसे ढूंढें। जिसका अर्थ है कि हमें सूची में मौजूद तत्वों की संख्या प्राप्त करनी है चाहे वे डुप्लीकेट हों या नहीं।उदाहरणनीचे