কম্পিউটার

একটি স্ট্রিং অদলবদল পাইথন ব্যবহার করে স্ট্রিং সমান করতে পারে কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম


ধরুন আমাদের একই দৈর্ঘ্যের দুটি স্ট্রিং 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

  1. একটি স্ট্রিং পরীক্ষা করার প্রোগ্রাম প্যালিনড্রোম কি পাইথনে নয়

  2. একটি স্ট্রিং প্যালিনড্রোম কিনা তা পরীক্ষা করার জন্য পাইথন প্রোগ্রাম

  3. একটি প্রদত্ত স্ট্রিং Heterogram কিনা তা পরীক্ষা করার জন্য পাইথন প্রোগ্রাম

  4. একটি স্ট্রিং প্যালিনড্রোম কিনা তা পাইথন ব্যবহার করছে কিনা তা কীভাবে পরীক্ষা করবেন?