ধরুন আমাদের দুটি ছোট হাতের স্ট্রিং 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