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

पायथन में संदेश को डिकोड करने के तरीकों की संख्या खोजने का प्रोग्राम


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

उदाहरण के लिए, यदि इनपुट message = "222" है, तो आउटपुट 3 होगा, क्योंकि इसे 3 तरीकों से डिकोड किया जा सकता है: bbb, bv, और vb।

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

  • memo := message के आकार + 1 के बराबर आकार की 0 से भरी सूची
  • memo[0] := 1
  • memo[1] := 1 यदि message[0] "0" नहीं है अन्यथा 0
  • i को 2 से message के आकार तक के लिए करें:
    • n1 := message[i-1:i] का संख्यात्मक मान
    • n2 := message[i-2:i] का संख्यात्मक मान
    • n1_valid := true यदि n1 > 0
    • n2_valid := true यदि n2 > 9 और n2 < 27
    • यदि n1_valid सत्य है, तो memo[i] := memo[i] + memo[i-1]
    • यदि n2_valid सत्य है, तो memo[i] := memo[i] + memo[i-2]
  • memo का अंतिम तत्व वापस करें

उदाहरण

class Solution:
    def solve(self, message):
        memo = [0 for i in range(len(message)+1)]
        memo[0] = 1
        memo[1] = 1 if message[0]!="0" else 0
        for i in range(2, len(message)+1):
            n1 = int(message[i-1:i])
            n2 = int(message[i-2:i])
            n1_valid = n1 > 0
            n2_valid = n2 > 9 and n2 < 27
            if n1_valid:
                memo[i] += memo[i-1]
            if n2_valid:
                memo[i] += memo[i-2]
        return memo[-1]
ob = Solution()
message = "2223"
print(ob.solve(message))

इनपुट

"2223"

आउटपुट

5
  1. - पायथन में अधिकतम सिक्के एकत्र करने का प्रोग्राम

    मान लीजिए हमारे पास एक 2D मैट्रिक्स है जहां प्रत्येक सेल कुछ सिक्के संग्रहीत करता है। यदि हम [0,0] से शुरू करते हैं, और केवल दाएं या नीचे जा सकते हैं, तो हमें नीचे-दाएं कोने तक पहुंचने तक एकत्र किए जा सकने वाले अधिकतम सिक्कों की संख्या ढूंढनी है। उदाहरण के लिए, यदि इनपुट है: 1422 6005 तो आउटपुट

  1. - पायथन में सीढ़ियां चढ़ने के तरीकों की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास n चरणों वाली एक सीढ़ी है, और हम एक बार में 1 या 2 चरण चढ़ सकते हैं। हमें एक फ़ंक्शन परिभाषित करना है जो सीढ़ी चढ़ने के अद्वितीय तरीकों की संख्या लौटाता है। चरणों का क्रम नहीं बदला जाना चाहिए, इसलिए चरणों का प्रत्येक अलग क्रम एक तरीका गिना जाता है। यदि उत्तर बहुत बड़ा है तो परिणा

  1. - पायथन प्रोग्राम: लिस्ट में सबसे बड़ी संख्या ढूंढें

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