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

পাইথনে অ্যালফাবেট টু ইন্টিজার ম্যাপিং দিয়ে স্ট্রিং ডিক্রিপ্ট করা

ধরি s একটি স্ট্রিং যা ডিজিট (0-9) এবং '#' দিয়ে তৈরি। আমরা s-কে ইংরেজি লোয়ারকেস ক্যারেক্টারে ম্যাপ করব:

  • 'a' থেকে 'i' -> '1' থেকে '9'
  • 'j' থেকে 'z' -> '10#' থেকে '26#'

ম্যাপিংয়ের পর স্ট্রিং বের করতে হবে। ইউনিক ম্যাপিং সবসময় থাকবে।

উদাহরণ

ইনপুট: "10#11#12" -> আউটপুট: "jkab" (10#=j, 11#=k, 1=a, 2=b)

সমাধানের ধাপসমূহ

  1. ক্যারেক্টার এবং তাদের ASCII ভ্যালুর ম্যাপ তৈরি করুন
  2. ans := "", map[''] := '', i := len(s) - 1
  3. যখন i >= 0:
    • যদি s[i] == '#', তবে:
      • temp := s[i-2:i]
      • ans := map[temp] + ans
      • i := i - 3
    • অন্যথায় ans := map[s[i]] + ans, i := i - 1
  4. ans রিটার্ন করুন

পাইথন কোড উদাহরণ

class Solution(object):
    def freqAlphabets(self, s):
        m = {}
        x = 'a'
        for i in range(1, 27):
            m[str(i)] = x
            x = chr(ord(x) + 1)
        ans = ""
        m[''] = ''
        i = len(s) - 1
        while i >= 0:
            if s[i] == "#":
                temp = ""
                for j in range(i - 2, i):
                    temp += s[j]
                ans = m[str(temp)] + ans
                i -= 3
            else:
                ans = m[s[i]] + ans
                i -= 1
        return ans

ob1 = Solution()
print(ob1.freqAlphabets("17#123#5621#"))

ইনপুট

"17#123#5621#"

আউটপুট

qawefu
  1. পাইথনে বাইনারি ট্রি থেকে স্ট্রিং কনস্ট্রাক্ট (Construct String from Binary Tree)

  2. পাইথনে স্ট্রিং লিস্টকে সর্টেড পূর্ণসংখ্যার লিস্টে রূপান্তর

  3. পাইথনে লিফ থেকে ছোট স্ট্রিং বের করা

  4. পাইথনে স্ট্রিং থেকে nth ক্যারেক্টার রিমুভ করা