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

पायथन में समरूप सबस्ट्रिंग की संख्या गिनने का कार्यक्रम

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

इसलिए, यदि इनपुट s ="xyyzzxx" जैसा है, तो आउटपुट 13 होगा क्योंकि समरूप सबस्ट्रिंग की तरह सूचीबद्ध हैं

  • 1."x" तीन बार दिखाई देता है।

  • "xx" एक बार दिखाई देता है।

  • 3. "y" दो बार प्रकट होता है।

  • "yy" एक बार दिखाई देता है।

  • 5. "z" तीन बार दिखाई देता है।

  • "zz" दो बार प्रकट होता है।

  • "zzz" एक बार दिखाई देता है।

तो , (3 + 1 + 2 + 1 + 3 + 2 + 1) =13.

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

  • s :=s "@" को जोड़ना

  • h:=एक नया नक्शा

  • पिछला:=एस[0]

  • सी:=1

  • इंडेक्स 1 से अंत तक प्रत्येक i के लिए, करें

    • अगर पिछला मैं जैसा नहीं है, तो

      • अगर पिछला*c h में मौजूद है, तो

        • एच[पिछला*सी] :=एच[पिछला*सी] + 1

      • अन्यथा,

        • ज[पिछला*सी]:=1

      • सी:=1

    • अगर पिछला मैं जैसा ही है, तो

      • सी:=सी + 1

    • पिछला:=मैं

  • फिन:=0

  • प्रत्येक के लिए i in h, do

    • t:=मैं का आकार

    • कश्मीर:=0

    • जबकि t 0 के समान नहीं है, करें

      • कश्मीर:=के + टी

      • टी:=टी - 1

    • फिन:=फिन + के*एच[i]

  • रिटर्न फिन मॉड 10^9+7

उदाहरण

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

def solve(s):
   s+="@"
   h={}
   prev=s[0]
   c=1
   for i in s[1:]:
      if prev!=i:
         if prev*c in h:
            h[prev*c]+=1
         else:
            h[prev*c]=1
         c=1
      if prev == i:
         c += 1
      prev = i
   fin=0
   for i in h:
      t=len(i)
      k=0
      while t!=0:
         k+=t
         t-=1
      fin+=k*h[i]
   return fin % 1000000007

s = "xyyzzzxx"
print(solve(s))

इनपुट

"xyyzzzxx"

आउटपुट

13

  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 की संख्या गिनने का कार्यक्रम

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