কম্পিউটার

পাইথনে দুটি স্ট্রিং কাছাকাছি কিনা তা নির্ধারণ করার জন্য প্রোগ্রাম


ধরুন আমাদের দুটি স্ট্রিং আছে, s এবং t, আমাদের পরীক্ষা করতে হবে s এবং t কাছাকাছি কিনা। আমরা বলতে পারি দুটি স্ট্রিং কাছাকাছি যদি আমরা নিম্নলিখিত ক্রিয়াকলাপগুলি ব্যবহার করে অন্যটি থেকে একটি অর্জন করতে পারি -

  • যেকোনো দুটি বিদ্যমান অক্ষর বিনিময় করুন। (যেমন abcde থেকে aecdb)

  • একটি বিদ্যমান অক্ষরের প্রতিটি ঘটনাকে অন্য বিদ্যমান অক্ষরে পরিবর্তন করুন এবং অন্যান্য অক্ষরের সাথেও একই কাজ করুন। (যেমন aacabb -> bbcbaa (এখানে সব a-কে b-এ রূপান্তরিত করা হয় এবং এর বিপরীতে))

আমরা উভয় স্ট্রিং-এ যতবার চাই ততবার অপারেশন ব্যবহার করতে পারি।

সুতরাং, যদি ইনপুটটি s ="zxyyyx", t ="xyyzzz" এর মতো হয়, তাহলে আউটপুটটি সত্য হবে, কারণ আমরা 3টি অপারেশনে s থেকে t পেতে পারি। ("zxyyyx" -> "zxxyyy"), ("zxxyyy" -> "yxxzzz"), এবং ("yxxzzz" -> "xyyzzz")।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • যদি s এবং t কোন অস্বাভাবিক অক্ষর থাকে, তাহলে

    • রিটার্ন ফলস

  • a :=s

    -এ অক্ষরের সমস্ত ফ্রিকোয়েন্সি মানের তালিকা
  • b :=t

    -এ অক্ষরের সমস্ত ফ্রিকোয়েন্সি মানের তালিকা
  • তালিকাটি একটি

    সাজান
  • তালিকা b

    সাজান
  • a যদি b এর মত না হয়, তাহলে

    • রিটার্ন ফলস

  • রিটার্ন ট্রু

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

from collections import Counter
def solve(s, t):
   if set(s) != set(t):
      return False
   a = list(Counter(s).values())
   b = list(Counter(t).values())
   a.sort()
   b.sort()
   if a != b:
      return False
   return True

s = "zxyyyx"
t = "xyyzzz"
print(solve(s, t))

ইনপুট

"zxyyyx", "xyyzzz"

আউটপুট

True

  1. পাইথনে দুটি স্ট্রিংয়ে সাধারণ শব্দ

  2. পাইথন প্রোগ্রাম দুটি ম্যাট্রিক্স গুণ করতে

  3. দুটি স্ট্রিং থেকে অস্বাভাবিক শব্দ খুঁজে পেতে পাইথন প্রোগ্রাম

  4. পাইথন প্রোগ্রাম দুটি অভিধানকে একত্রিত করতে