কম্পিউটার টিউটোরিয়াল

পাইথনে বাডি স্ট্রিংস (Buddy Strings) সমস্যা


সমস্যা বিবরণ

দুটি স্ট্রিং A এবং B দেওয়া থাকলে, A-তে কেবল দুটি অক্ষর বদলি (swap) করলে কি B পাওয়া যায় তা যাচাই করতে হবে।

উদাহরণ

ইনপুট: A = "ba", B = "ab" → আউটপুট: True

'b' এবং 'a' বদলি করলে "ab" হয়।

এলগরিদম

  1. যদি len(A) != len(B) → False।
  2. যদি sorted(A) != sorted(B) → False (অক্ষরগুলো মিলছে না)।
  3. যদি A == B এবং A-তে সব অক্ষর অনন্য (distinct) → False (সমান স্ট্রিংয়ের জন্য কমপক্ষে এক জোড়া একই অক্ষর থাকতে হবে swap-এর জন্য)।
  4. অন্যথায়, A এবং B-এর মধ্যে কতগুলো অবস্থানে অক্ষর ভিন্ন সেটা গণনা করুন (count)।
  5. যদি count == 2 → True (ঠিক দুটি জায়গা ভিন্ন মানে swap করে মিলাবে)।
  6. অন্যথায় → 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
  1. পাইথনে ফাংশন ডিফাইন করা (Defining a Function)

  2. পাইথনে ইউনিকোড স্ট্রিং

  3. পাইথনের FuzzyWuzzy লাইব্রেরি দিয়ে ফাজি স্ট্রিং ম্যাচিং

  4. পাইথনে স্ট্রিং-এ % অপারেটর কী করে