সমস্যা বিবরণ
দুটি স্ট্রিং A এবং B দেওয়া থাকলে, A-তে কেবল দুটি অক্ষর বদলি (swap) করলে কি B পাওয়া যায় তা যাচাই করতে হবে।
উদাহরণ
ইনপুট: A = "ba", B = "ab" → আউটপুট: True
'b' এবং 'a' বদলি করলে "ab" হয়।
এলগরিদম
- যদি
len(A) != len(B)→False। - যদি
sorted(A) != sorted(B)→False(অক্ষরগুলো মিলছে না)। - যদি
A == Bএবং A-তে সব অক্ষর অনন্য (distinct) →False(সমান স্ট্রিংয়ের জন্য কমপক্ষে এক জোড়া একই অক্ষর থাকতে হবে swap-এর জন্য)। - অন্যথায়, A এবং B-এর মধ্যে কতগুলো অবস্থানে অক্ষর ভিন্ন সেটা গণনা করুন (
count)। - যদি
count == 2→True(ঠিক দুটি জায়গা ভিন্ন মানে swap করে মিলাবে)। - অন্যথায় →
False।
পাইথন বাস্তবায়ন
class Solution:
def buddyStrings(self, A, B):
if len(A) != len(B):
return False
if sorted(A) != sorted(B):
return False
if A == B and len(set(A)) == len(A):
return False
count = 0
for i in range(len(A)):
if A[i] != B[i]:
count += 1
if count == 3:
return False
return count == 2
ob = Solution()
print(ob.buddyStrings("ba", "ab")) # True
ইনপুট / আউটপুট
ইনপুট: "ba", "ab" আউটপুট: True