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

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


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

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

हल करने के चरण

  • m := 10^9 + 7

  • N := s का आकार

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

  • dp[N] := 1

  • i के लिए N - 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]) mod m

      • अन्यथा, लूप से बाहर निकलें

  • dp[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. - पायथन में संदेश को डिकोड करने के तरीकों की संख्या खोजने का प्रोग्राम

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

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

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

  1. - पायथन में उन स्ट्रिंग्स की संख्या खोजें जहां 'a' 'a' या 'b' हो सकता है, और 'b' 'b' ही रहता है

    मान लीजिए हमारे पास केवल a और b वाली एक स्ट्रिंग s है। a a रह सकते हैं या b में बदल सकते हैं, लेकिन b को बदला नहीं जा सकता। हमें उन अद्वितीय स्ट्रिंग्स की संख्या ढूंढनी है जो हम बना सकते हैं। उदाहरण के लिए, यदि इनपुट है s = baab, तो आउटपुट होगा 4, क्योंकि हम ये स्ट्रिंग्स बना सकते हैं: [baab, babb,