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

पायथन में एस में अलग-अलग सबस्ट्रिंग की संख्या गिनने का कार्यक्रम

मान लीजिए कि हमारे पास एक स्ट्रिंग s है, हमें s के अलग-अलग गैर-रिक्त सबस्ट्रिंग की संख्या ज्ञात करनी है।

इसलिए, यदि इनपुट s ="abaa" जैसा है, तो आउटपुट 8 होगा, क्योंकि सबस्ट्रिंग ["a", "b", "ab", "ba", "aa", "aba", " बा", "आबा"]।

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

  • कोशिश करें:=एक नया नक्शा
  • n :=आकार का
  • मैं के लिए 0 से n -1 की सीमा में, करो
    • करी :=ट्राई
    • जे के लिए i से n-1 की श्रेणी में, करें
      • c :=s[j]
      • अगर c चालू नहीं है, तो
        • curr[c] :=एक नया नक्शा
      • करा :=curr[c]
      • curr["*"] :=सच
  • q :=एक कतार बनाएं, और तीन डालें
  • उत्तर:=0
  • जबकि q खाली नहीं है, करें
    • उत्तर:=उत्तर + 1
    • t :=q का बायां आइटम, और इस आइटम को q से हटा दें
    • टी में प्रत्येक सी के लिए, करें
      • यदि c "*" के समान नहीं है, तो
        • q के अंत में t[c] डालें
  • वापसी उत्तर - 1

उदाहरण

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

from collections import deque
def solve(s):
   trie = {}
   n = len(s)
   for i in range(n):
      curr = trie
      for j in range(i, n):
         c = s[j]
         if c not in curr:
            curr[c] = {}
         curr = curr[c]
         curr["*"] = True

   q = deque([trie])
   ans = 0
   while q:
      ans += 1
      t = q.popleft()
      for c in t:
         if c != "*":
            q.append(t[c])
   return ans - 1

s = "abaa"
print(solve(s))

इनपुट

"abaa"

आउटपुट

8

  1. पायथन में बाइनरी स्ट्रिंग में सभी 1s के साथ सबस्ट्रिंग गिनने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बाइनरी स्ट्रिंग है। हमें उन सबस्ट्रिंग्स की संख्या ज्ञात करनी है जिनमें केवल 1 है। अगर उत्तर बहुत बड़ा है, तो परिणाम को 10^9+7 से संशोधित करें। इसलिए, यदि इनपुट s =100111 जैसा है, तो आउटपुट 7 होगा, क्योंकि केवल 1 वाले सबस्ट्रिंग [1, 1, 1, 1, 11 हैं। , 11 और 111] इसे हल कर

  1. पायथन में प्रत्येक ब्रैकेट गहराई में वर्णों की संख्या गिनने का कार्यक्रम

    मान लीजिए कि हमारे पास एक स्ट्रिंग है जिसमें केवल तीन वर्ण X, (, और ) हैं। स्ट्रिंग में संतुलित कोष्ठक होते हैं और कुछ X के बीच में संभावित रूप से नेस्टेड कोष्ठक भी पुनरावर्ती रूप से हो सकते हैं। हमें s में कोष्ठक की प्रत्येक गहराई पर X की संख्या ज्ञात करनी है, जो सबसे कम गहराई से शुरू होकर सबसे गहर

  1. पायथन में n नोड्स के साथ BST की संख्या गिनने का कार्यक्रम

    मान लीजिए कि हमारे पास अलग-अलग नोड हैं। सभी अलग हैं। हमें यह पता लगाना है कि हम उन्हें कितने तरीकों से व्यवस्थित कर सकते हैं ताकि हम बाइनरी सर्च ट्री बना सकें। जैसा कि हम बाइनरी सर्च ट्री के बारे में जानते हैं, लेफ्ट सबट्री में हमेशा छोटे मान होते हैं और राइट सबट्री में बड़े मान होते हैं। इसे हल कर