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

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


मान लीजिए हमारे पास एक लोअरकेस स्ट्रिंग s है, हमें s के हर सबस्ट्रिंग में विशिष्ट वर्णों की संख्या का योग ज्ञात करना है। यदि उत्तर बहुत बड़ा है तो परिणाम को 10^9+7 से मोड करें।

इसलिए, यदि इनपुट s = "xxy" जैसा है, तो आउटपुट 6 होगा, क्योंकि सबस्ट्रिंग्स और उनकी गिनती हैं:

  • "x" : 1

  • "x" : 1

  • "y" : 1

  • "xx" : 0 (क्योंकि "x" विशिष्ट नहीं है)

  • "xy" : 2

  • "xxy" : 1 (क्योंकि "x" विशिष्ट नहीं है)

हल करने के चरण

  • m := 10^9 + 7

  • prev_seen := एक नया खाली मैप

  • ans := 0

  • util() फ़ंक्शन परिभाषित करें। यह i, symbol लेगा

    • prev_seen[symbol] := सिंगल मान -1 वाली सूची

    • prev := prev_seen[symbol]

    • i को prev के अंत में डालें

    • यदि prev का आकार > 2, तो

      • left := prev का पहला तत्व और prev से पहला तत्व हटाएं

      • middle := prev[0], right := prev[1]

      • cnt := (middle - left) * (right - middle)

      • ans := (ans + cnt) mod m

  • s में प्रत्येक इंडेक्स i और मान symbol के लिए, util(i, symbol) करें

  • prev_seen में प्रत्येक symbol के लिए, util(s का आकार, symbol) करें

  • ans लौटाएं

उदाहरण

class Solution:
    def solve(self, s):
        m = 10 ** 9 + 7
        prev_seen = {}
        ans = 0
        def util(i, symbol):
            nonlocal ans
            prev = prev_seen.setdefault(symbol, [-1])
            prev.append(i)
            if len(prev) > 2:
                left = prev.pop(0)
                middle, right = prev
                cnt = (middle - left) * (right - middle)
                ans = (ans + cnt) % m
        for i, symbol in enumerate(s):
            util(i, symbol)
        for symbol in prev_seen:
            util(len(s), symbol)
        return ans

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

इनपुट

xxy

आउटपुट

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

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

  1. Python प्रोग्राम से सेट का उपयोग करके दी गई स्ट्रिंग में स्वरों की संख्या गिनना Python प्रोग्राम से सेट का उपयोग करके दी गई स्ट्रिंग में स्वरों की संख्या गिनना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक स्ट्रिंग दी गई है, हमें सेट का उपयोग करके दी गई स्ट्रिंग में स्वरों की संख्या गिनने की आवश्यकता है। यहां हम पूरी स्ट्रिंग को पार करते हैं और जांचते हैं कि प्रत्येक वर्ण स्वर है या नहीं और काउंट बढ़ाते हैं। आ

  1. - पायथन प्रोग्राम: सेट का उपयोग करके दिए गए स्ट्रिंग में वॉवेल्स की संख्या गिनना

    इस प्रोग्राम में, एक यूजर इनपुट स्ट्रिंग दी गई है। हमें इस स्ट्रिंग में वॉवेल्स की संख्या गिननी है। यहां हम पायथन में सेट का उपयोग करते हैं। सेट एक अनऑर्डर्ड कलेक्शन डेटा टाइप है जो इटरेबल, म्यूटेबल है और इसमें कोई डुप्लिकेट एलिमेंट्स नहीं होते।उदाहरणInput str1=pythonprogram Output 3एल्गोरिदमचरण 1: