ধরুন আমাদের একই দৈর্ঘ্যের দুটি স্ট্রিং s এবং t আছে। একটি অপারেশন বিবেচনা করুন যেখানে আমরা একটি স্ট্রিং এ দুটি সূচক নির্বাচন করি (অগত্যা ভিন্ন নয়) এবং নির্বাচিত সূচকগুলিতে অক্ষরগুলি অদলবদল করি। আমাদের পরীক্ষা করতে হবে যে ঠিক একটি স্ট্রিং-এ সর্বাধিক একটি স্ট্রিং অদলবদল করার মাধ্যমে উভয় স্ট্রিংকে একই করা সম্ভব কি না৷
সুতরাং, যদি ইনপুটটি s ="hello" t ="hlelo" এর মত হয়, তাহলে আউটপুটটি True হবে কারণ আমাদেরকে 'e' এবং 'l' s বা t-এ অদলবদল করতে হবে তাদের সমান করতে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
max_diffs:=2
-
পার্থক্য:=0
-
st :=একটি নতুন সেট
-
st2 :=একটি নতুন সেট
-
0 থেকে s আকারের রেঞ্জের জন্য, করুন
-
যদি s[i] t[i] এর মত না হয়, তাহলে
-
diffs :=diffs + 1
-
-
যদি s[i] st-এ উপস্থিত না থাকে, তাহলে
-
s[i] st
-এ ঢোকান
-
-
যদি t[i] st2 তে উপস্থিত না থাকে, তাহলে
-
st2
-এ t[i] ঢোকান
-
-
যদি diffs> max_diffs, তাহলে
-
রিটার্ন ফলস
-
-
-
সত্য ফেরত দিন যদি (পার্থক্য 0 এর মত হয় বা পার্থক্য 2 এর মত হয়) এবং st এর আকার st2 এর আকারের সমান হয় এবং st এর আকার st2 এর মত হয়, অন্যথায় মিথ্যা
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
def solve(s, t): max_diffs=2 diffs=0 st = set() st2 = set() for i in range(len(s)): if s[i] != t[i]: diffs+=1 if s[i] not in st: st.add(s[i]) if t[i] not in st2: st2.add(t[i]) if diffs > max_diffs: return False return (diffs == 0 or diffs == 2) and len(st) == len(st2) and st == st2 s = "hello" t = "hlelo" print(solve(s, t))
ইনপুট
"hello", "hlelo"
আউটপুট
True