কম্পিউটার টিউটোরিয়াল

পাইথনে ডিকোড ওয়েজ


मान लीजिए हमारे पास A से Z तक के अक्षरों वाला एक संदेश है जिसे निम्नलिखित मैपिंग का उपयोग करके संख्याओं में एन्कोड किया जा रहा है − 'A' → 1, 'B' → 2 ... 'Z' → 26। इसलिए यदि हमारे पास एक गैर-खाली स्ट्रिंग है, जिसमें केवल अंक हैं, तो हमें यह ढूंढना होगा कि इसे कितने तरीकों से डिकोड किया जा सकता है। इसलिए यदि स्ट्रिंग "12" की तरह है, तो इसे "AB" या "L" से बनाया जा सकता है, इसलिए दो संभावित तरीके हैं। तो उत्तर 2 होगा।

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

  • हम इसे डायनामिक प्रोग्रामिंग का उपयोग करके हल करेंगे।
  • n := s की लंबाई
  • dp := n संख्या के 0s के साथ एक सरणी
  • यदि s[0] '0' नहीं है, तो dp[0] := 1
  • i के लिए 1 से n - 1 तक रेंज में
    • x := s[i] पूर्णांक के रूप में, y := इंडेक्स i - 1 से i + 1 तक s का सबस्ट्रिंग पूर्णांक के रूप में
    • यदि x >= 1 और y <= 9, तो dp[i] := dp[i] + dp[i - 1]
    • यदि y >= 10 और y <= 26
      • यदि i - 2 >= 0, तो dp[i] := dp[i] + dp[i - 2], अन्यथा dp[i] को 1 से बढ़ाएं
  • dp का अंतिम तत्व लौटाएं

उदाहरण (पाइथन)

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

class Solution(object):    def numDecodings(self, s):       n = len(s)       dp = [0 for i in range(n)]       if s[0]!='0':          dp[0]=1       for i in range(1,n):          x = int(s[i])          y = int(s[i-1:i+1])          if x>=1 and x<=9:             dp[i]+=dp[i-1]          if y>=10 and y<=26:             if i-2>=0:                dp[i]+=dp[i-2]             else:                dp[i]+=1       return dp[-1] ob1 = Solution() print(ob1.numDecodings("226"))

इनपुट

"226"

आउटपुट

3

  1. পাইথনে লিস্ট এক্সটেন্ড করা (৫টি ভিন্ন উপায়)

  2. পাইথনে লিস্ট ক্লিয়ার করার বিভিন্ন উপায়

  3. পাইথনে এস্কেপ ক্যারেক্টার প্রিন্ট করার পদ্ধতিসমূহ

  4. পাইথনে ক্যারেক্টার ইনক্রিমেন্ট করার পদ্ধতিসমূহ