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

Python प्रोग्राम - स्ट्रिंग में विशिष्ट सबस्ट्रिंग की संख्या गिनें

एक स्ट्रिंग s दी गई है, हमें s के विशिष्ट गैर-खाली सबस्ट्रिंग की संख्या खोजनी है।

उदाहरण

इनपुट: s = "abaa"

आउटपुट: 8

व्याख्या: सबस्ट्रिंग हैं ["a", "b", "ab", "ba", "aa", "aba", "baa", "abaa"]।

एल्गोरिदम (ट्राई/प्रीफिक्स ट्री)

  1. trie := {} (खाली डिक्शनरी)
  2. n := len(s)
  3. i 0 से n-1 तक:
    • curr := trie
    • j i से n-1 तक:
      • c := s[j]
      • यदि c curr में नहीं: curr[c] := {}
      • curr := curr[c]
      • curr["*"] := True (अंत मार्कर)
  4. q := deque([trie])
  5. ans := 0
  6. जब q खाली नहीं:
    • ans += 1
    • t := q.popleft()
    • प्रत्येक c in t के लिए:
      • यदि c != "*": q.append(t[c])
  7. ans - 1 लौटाएं (रूट नोड घटाएं)

Python कार्यान्वयन

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))  # आउटपुट: 8

इनपुट/आउटपुट

Input: "abaa"
Output: 8
  1. - Python प्रोग्राम - बाइनरी स्ट्रिंग में सभी 1 वाले सबस्ट्रिंग की गिनती

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

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

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

  1. पायथन में ऐरे में x से बड़े सभी वैल्यूज को फ़िल्टर करने का प्रोग्राम पायथन में ऐरे में x से बड़े सभी वैल्यूज को फ़िल्टर करने का प्रोग्राम

    मान लीजिए हमारे पास nums नामक संख्याओं की सूची है। हमारे पास x नामक एक और संख्या भी है। हमें nums से उन सभी नंबरों को फ़िल्टर करके ढूंढना है जो x से कम हैं। पायथन में filter() मेथड होता है जो फंक्शन को आर्गुमेंट के रूप में लेता है और इस फंक्शन का उपयोग करके फ़िल्टर करता है। तो, यदि इनपुट nums = [1,5