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

পাইথনে দুটি স্ট্রিং ক্লোজ (close) কিনা চেক করার প্রোগ্রাম


মান লিজিয়ে আমাদের দুটি স্ট্রিং আছে s এবং t, আমাদের চেক করতে হবে সেগুলো close কিনা। দুটি স্ট্রিং close বলা হয় যদি নিচের অপারেশনগুলো ব্যবহার করে একটিকে অন্যটিতে রূপান্তর করা যায়:

  • যেকোনো দুটি এক্সিস্টিং ক্যারেক্টার এক্সচেঞ্জ করুন। (যেমন abcde থেকে aecdb)

  • একটি এক্সিস্টিং ক্যারেক্টারের সকল অকুরেন্স কে অন্য এক্সিস্টিং ক্যারেক্টারে কনভার্ট করুন, এবং অন্যটিও একইভাবে করুন। (যেমন aacabb -> bbcbaa এখানে সব 'a' হল 'b' এবং সব 'b' হল 'a')

অপারেশনগুলো যেকোনো স্ট্রিংয়ে যেকোনো সংখ্যকবার ব্যবহার করা যায়।

যেমন, ইনপুট হলে s = "zxyyyx", t = "xyyzzz", তবে আউটপুট হবে true, কারণ ৩ অপারেশন দিয়ে s-থেকে t পাওয়া যায়: ("zxyyyx" -> "zxxyyy"), ("zxxyyy" -> "yxxzzz"), ("yxxzzz" -> "xyyzzz")।

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

  • যদি s এবং t-এ কোনো আনকমন ক্যারেক্টার থাকে, তবে False রিটার্ন করুন।

  • a := s-এর ক্যারেক্টার ফ্রিকোয়েন্সি ভ্যালুগুলো থেকে বানানো লিস্ট

  • b := t-এর ক্যারেক্টার ফ্রিকোয়েন্সি ভ্যালুগুলো থেকে বানানো লিস্ট

  • a এবং b সর্ট করুন।

  • যদি a != b হয়, তবে False রিটার্ন করুন।

  • True রিটার্ন করুন।

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন:

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. পাইথনে দুটি ডিকশনারি মার্জ (Merge) করার পদ্ধতি