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

পাইথনে একটি স্ট্রিং সোয়্যাপ দিয়ে দুটি স্ট্রিং সমান করা সম্ভব কিনা যাচাই


একই দৈর্ঘ্যের দুটি স্ট্রিং s এবং t দেওয়া আছে। একটি অপারেশনে আমরা একটি স্ট্রিং-এ দুটি ইনডেক্স বেছে নিয়ে সেগুলো সোয়্যাপ করতে পারি। আমাদের কাজ হলো শুধু একটি স্ট্রিং-এ সর্বোচ্চ একবার সোয়্যাপ করে দুটি স্ট্রিং সমান করা সম্ভব কিনা যাচাই করা।

যেমন, s = "hello", t = "hlelo" হলে আউটপুট True। কারণ 'e' এবং 'l' সোয়্যাপ করলে সমান হয়।

সমাধানের ধাপসমূহ

  • max_diffs := 2, diffs := 0
  • st := খালি সেট, st2 := খালি সেট
  • i = 0 থেকে s-এর দৈর্ঘ্য পর্যন্ত লুপ:
    • যদি s[i] != t[i], তবে diffs বাড়ান।
    • s[i] st-এ নেই তবে যোগ করুন।
    • t[i] st2-এ নেই তবে যোগ করুন।
    • যদি diffs > max_diffs হয়, তবে False ফেরত দিন।
  • ফেরত দিন: (diffs == 0 বা diffs == 2) এবং len(st) == len(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. Python-এ স্ট্রিং প্যালিনড্রোম (Palindrome) কিনা চেক করা