কম্পিউটার

পাইথনে একটি স্ট্রিং 1-থেকে-1 ম্যাপ করা যায় কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম


ধরুন আমাদের দুটি ছোট হাতের স্ট্রিং s আছে, এবং t আমাদের পরীক্ষা করতে হবে যে আমরা প্রতিটি অক্ষরের জন্য s থেকে অন্য অক্ষরের জন্য একটি 1-থেকে-1 ম্যাপিং তৈরি করতে পারি (একই অক্ষর হতে পারে) যেমন s কে t-এ ম্যাপ করা যেতে পারে। (অক্ষরের ক্রম পরিবর্তন করা হবে না)।

সুতরাং, যদি ইনপুটটি s ="papa", t ="lili" এর মতো হয়, তাহলে আউটপুটটি True হবে, কারণ আমরা এই ম্যাপিং তৈরি করতে পারি:"p" থেকে "l", "a" -> "i"

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • s_dict :=একটি নতুন মানচিত্র
  • t_dict :=একটি নতুন মানচিত্র
  • আমি 0 থেকে ন্যূনতম s আকার এবং t আকারের পরিসরের জন্য,
      করুন
    • যদি s_dict-এ s[i] থাকে, তাহলে
      • যদি s_dict[s[i]] t[i] এর মত না হয়, তাহলে
        • মিথ্যে ফেরত দিন
    • অন্যথায় যখন t_dict-এ t[i] উপস্থিত থাকে, তখন
      • যদি t_dict[t[i]] s[i] এর মত না হয়, তাহলে
        • মিথ্যে ফেরত দিন
    • অন্যথায়,
      • s_dict[s[i]] :=t[i]
      • t_dict[t[i]] :=s[i]
  • সত্য ফেরান

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

class Solution:
   def solve(self, s, t):
      s_dict = {}
      t_dict = {}
      for i in range(min(len(s), len(t))):
         if s[i] in s_dict:
            if s_dict[s[i]] != t[i]:
               return False
            elif t[i] in t_dict:
               if t_dict[t[i]] != s[i]:
                  return False
               else:
                  s_dict[s[i]] = t[i]
                  t_dict[t[i]] = s[i]
      return True
ob = Solution()
print(ob.solve("papa", "lili"))

ইনপুট

"papa", "lili"

আউটপুট

True

  1. আমরা পাইথনে প্রদত্ত স্ট্রিং অক্ষর থেকে কে প্যালিনড্রোম তৈরি করতে পারি কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম?

  2. একটি স্ট্রিং চেক করার প্রোগ্রামটি পাইথনের একটি উপাদান সরিয়ে অন্যটিতে রূপান্তরিত করা যেতে পারে

  3. পাইথনে ঘড়ির কাঁটার দিকে অক্ষর পরিবর্তন করে একটি স্ট্রিং চেক করার প্রোগ্রামটিকে অন্যটিতে রূপান্তর করা যেতে পারে

  4. একটি প্রদত্ত স্ট্রিং Heterogram কিনা তা পরীক্ষা করার জন্য পাইথন প্রোগ্রাম