मान लीजिए कि हमारे पास 'ए' =1, 'बी' =2, ... 'जेड' =26 जैसी मैपिंग है, और हमारे पास एक एन्कोडेड संदेश संदेश स्ट्रिंग है, हमें इसे डिकोड करने के तरीकों की संख्या गिननी होगी।पी>
इसलिए, यदि इनपुट संदेश ="222" जैसा है, तो आउटपुट 3 होगा, क्योंकि इसे 3 तरीकों से डिकोड किया जा सकता है:बीबीबी, बीवी, और वीबी।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
मेमो :=संदेश आकार के समान आकार के 0s की सूची + 1
-
मेमो[0] :=1
-
मेमो[1] :=1 जब संदेश [0] "0" के समान न हो अन्यथा 0
-
क्योंकि मैं 2 से संदेश के आकार के बीच में हूं, ऐसा करें
-
n1 :=संदेश का संख्यात्मक मान [सूचकांक i-1 से i तक]
-
n2 :=संदेश का सांख्यिक मान [सूचकांक i-2 से i तक]
-
n1_valid:=सत्य जब n1> 0
-
n2_valid:=सत्य जब n2> 9 और n2 <27
-
अगर n1_valid सही है, तो
-
मेमो[i] :=मेमो[i] + मेमो[i-1]
-
-
अगर n2_valid सही है, तो
-
मेमो[i] :=मेमो[i] + मेमो[i-2]
-
-
-
मेमो का अंतिम तत्व लौटाएं
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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