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

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

मान लीजिए कि हमारे पास एक तार एस है। s में 0 - 9 के अंक हैं और हमारे पास एक अन्य संख्या k भी है। हमें उन विभिन्न तरीकों की संख्या ज्ञात करनी है जिन्हें [1, k] से संख्याओं की सूची के रूप में दर्शाया जा सकता है। अगर उत्तर बहुत बड़ा है तो परिणाम मोड 10^9 + 7 लौटाएं।

इसलिए, यदि इनपुट s ="3456" k =500 जैसा है, तो आउटपुट 7 होगा, जैसा कि हम [3, 4, 5, 6], [34, 5, 6], [3] का प्रतिनिधित्व कर सकते हैं। 4, 56], [3, 45, 6], [34, 56], [345, 6], [3, 456]

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

  • मी :=10^9 + 7

  • एन:=एस का आकार

  • dp :=आकार की एक सूची (N + 1) और 0 से भरें

  • डीपी [एन]:=1

  • मैं के लिए एन -1 से 0 की श्रेणी में, 1 से घटाएं, करें

    • curr_val :=0

    • j के लिए i से N की श्रेणी में, करें

      • curr_val :=curr_val * 10 + (s[j] संख्या के रूप में)

      • अगर curr_val 1 से k के बीच है, तो

        • dp[i] :=(dp[i] + dp[j + 1]) मॉड m

      • अन्यथा,

        • लूप से बाहर आएं

  • वापसी डीपी [0]

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

उदाहरण

class Solution:
   def solve(self, s, k):
      m = 10 ** 9 + 7
      N = len(s)
      dp = [0] * (N + 1)
      dp[N] = 1
      for i in range(N − 1, −1, −1):
         curr_val = 0
         for j in range(i, N):
            curr_val = curr_val * 10 + int(s[j])
            if 1 <= curr_val <= k:
               dp[i] = (dp[i] + dp[j + 1]) % m
            else:
               break
      return dp[0]
ob = Solution()
s = "3456"
k = 500
print(ob.solve(s, k))

इनपुट

"3456", 500

आउटपुट

7

  1. पायथन में एक संदेश को डिकोड करने के कई तरीकों को खोजने के लिए कार्यक्रम

    मान लीजिए कि हमारे पास ए =1, बी =2, ... जेड =26 जैसी मैपिंग है, और हमारे पास एक एन्कोडेड संदेश संदेश स्ट्रिंग है, हमें इसे डिकोड करने के तरीकों की संख्या गिननी होगी। इसलिए, यदि इनपुट संदेश =222 जैसा है, तो आउटपुट 3 होगा, क्योंकि इसे 3 तरीकों से डिकोड किया जा सकता है:बीबीबी, बीवी, और वीबी। इसे हल क

  1. पायथन में 0 से n मानों के साथ अद्वितीय बाइनरी सर्च ट्री की संख्या गिनने का कार्यक्रम बनाया जा सकता है

    मान लीजिए कि हमारे पास एक संख्या n है, हमें उन अद्वितीय BST की संख्या ज्ञात करनी है जिन्हें हम [0, n) से संख्याओं के साथ उत्पन्न कर सकते हैं। यदि उत्तर बहुत बड़ा मॉड है तो परिणाम 10^9+7 इसलिए, यदि इनपुट n =3 जैसा है, तो आउटपुट 5 . होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - संख्या :=1

  1. स्ट्रिंग की संख्या खोजने के लिए प्रोग्राम जहां हम 'ए' 'ए' या 'बी' हो सकते हैं, और 'बी' पाइथन में 'बी' रहता है

    मान लीजिए कि हमारे पास केवल ए और बी के साथ एक स्ट्रिंग है। ए एस ए रह सकता है या बी में बदल सकता है, लेकिन बी को बदला नहीं जा सकता है। हमें अद्वितीय स्ट्रिंग्स की संख्या ज्ञात करनी होगी जो हम बना सकते हैं। इसलिए, यदि इनपुट s =baab जैसा है, तो आउटपुट 4 होगा, क्योंकि हम इन स्ट्रिंग्स को बना सकते हैं -