ধরুন আমাদের দুটি ছোট হাতের স্ট্রিং 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] এর মত না হয়, তাহলে
- মিথ্যে ফেরত দিন
- যদি s_dict[s[i]] t[i] এর মত না হয়, তাহলে
- অন্যথায় যখন t_dict-এ t[i] উপস্থিত থাকে, তখন
- যদি t_dict[t[i]] s[i] এর মত না হয়, তাহলে
- মিথ্যে ফেরত দিন
- যদি t_dict[t[i]] s[i] এর মত না হয়, তাহলে
- অন্যথায়,
- s_dict[s[i]] :=t[i]
- t_dict[t[i]] :=s[i]
- যদি s_dict-এ 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