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

पायथन में एक स्ट्रिंग को विभाजित करने के तरीकों की संख्या खोजने के लिए कार्यक्रम

मान लीजिए कि हमारे पास एक बाइनरी स्ट्रिंग है, हम s को 3 गैर-रिक्त स्ट्रिंग्स s1, s2, s3 में विभाजित कर सकते हैं जैसे कि (s1 concatenate s2 concatenate s3 =s)। हमें उन तरीकों की संख्या ज्ञात करनी है जिन्हें s विभाजित किया जा सकता है ताकि s1, s2, और s3 में वर्णों की संख्या '1' समान हो। उत्तर बहुत बड़ा हो सकता है इसलिए वापसी उत्तर मोड 10^9+7.

इसलिए, यदि इनपुट s ="11101011" जैसा है, तो आउटपुट 2 होगा क्योंकि हम उन्हें "11 | 1010 | 11" और "11 | 101 | 011" की तरह विभाजित कर सकते हैं।

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

  • गिनती :=s में 1s की संख्या गिनें
  • म :=10^9 + 7
  • उत्तर:=आकार 2 की एक सरणी और 0 से भरें
  • यदि काउंट मोड 3, 0 के समान नहीं है, तो
    • वापसी 0
  • अन्यथा जब गिनती 0 के समान हो, तो
    • रिटर्न (nCr जहां n का आकार s -1 है और r 2 है) mod m
  • बाएं:=0
  • दाएं:=s - 1 का आकार
  • cum_s :=0, cum_e :=0
  • जबकि cum_s <=काउंट/3 का भागफल या कम_e <=काउंट/3 का भागफल, करें
    • यदि s[बाएं] "1" के समान है, तो
      • cum_s :=cum_s + 1
    • यदि s[दाएं] "1" के समान है, तो
      • cum_e :=cum_e + 1
    • यदि cum_s, गिनती/3 के भागफल के समान है, तो
      • Ans[0] :=ans[0] + 1
    • यदि cum_e, गिनती/3 के भागफल के समान है, तो
      • उत्तर[1] :=उत्तर[1] + 1
    • बाएं:=बाएं + 1
    • दाएं:=दाएं - 1
  • वापसी (उत्तर [0] * उत्तर [1]) मॉड एम

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

उदाहरण

def solve(s):
   count = s.count("1")
   m = 10**9 + 7
   ans = [0, 0]
   if count % 3 != 0:
      return 0
   elif count == 0:
      return comb(len(s)-1,2) % m
   left = 0
   right = len(s)-1
   cum_s = 0
   cum_e = 0
   while(cum_s <= count//3 or cum_e <= count//3):
      if s[left] == "1":
         cum_s+=1
      if s[right] == "1":
         cum_e+=1
      if cum_s == count//3:
         ans[0]+=1
      if cum_e == count//3:
         ans[1]+=1
      left += 1
      right -= 1
   return (ans[0]*ans[1]) % m
s = "11101011"
print(solve(s))

इनपुट

"11101011"

आउटपुट

2

  1. एक सूची में सबसे बड़ी संख्या खोजने के लिए पायथन कार्यक्रम

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

  1. अजगर में एक स्ट्रिंग की लंबाई खोजें (3 तरीके)

    स्ट्रिंग एक अजगर है जो यूनिकोड वर्णों की एक श्रृंखला है। एक बार घोषित होने के बाद यह परिवर्तन योग्य नहीं है। इस लेख में हम देखेंगे कि स्ट्रिंग की लंबाई ज्ञात करने के विभिन्न तरीके क्या हैं। लेन का उपयोग करना() यह सबसे सीधा रास्ता है। यहां हम len() नाम के लाइब्रेरी फंक्शन का उपयोग करते हैं। स्ट्रिंग

  1. एक स्ट्रिंग में दर्पण वर्ण खोजने के लिए पायथन प्रोग्राम

    उपयोगकर्ता इनपुट स्ट्रिंग और उस स्थिति से स्थिति को देखते हुए हमें वर्णों को वर्णानुक्रम में स्ट्रिंग की लंबाई तक दर्पण करने की आवश्यकता है। इस ऑपरेशन में, हम a को z, b से y, c से x, d से w में बदलते हैं और इसी तरह से पहला कैरेक्टर आखिरी हो जाता है और इसी तरह चालू। Inpu t: p = 3 Input string = p