দুই স্ট্রিংয়ের ক্যারেক্টার ফ্রিকোয়েন্সি Counter দিয়ে তুলনা করা হয়। প্রথম স্ট্রিংয়ের সব ক্যারেক্টার দ্বিতীয় স্ট্রিংয়ে আছে কিনা চেক করা হয়।
উদাহরণ
from collections import Counter
def can_form(s1, s2):
c1 = Counter(s1)
c2 = Counter(s2)
# ইন্টারসেকশন: min(count) প্রতিটি ক্যারেক্টারের জন্য
intersection = c1 & c2
return intersection == c1
str1 = "Hi Mark"
str2 = "how are yoU"
print("স্ট্রিং ১:", str1)
print("স্ট্রিং ২:", str2)
if can_form(str1, str2):
print("সম্ভব")
else:
print("সম্ভব নয়")
আউটপুট
স্ট্রিং ১: Hi Mark স্ট্রিং ২: how are yoU সম্ভব নয়
ব্যাখ্যা
Counterদিয়ে ক্যারেক্টার কাউন্ট।&অপারেটর দিয়ে ইন্টারসেকশন (প্রতি ক্যারেক্টারের মিনিমাম কাউন্ট)।যদি ইন্টারসেকশন == c1 হয়, তবে s1-এর সব ক্যারেক্টার s2-তে আছে।
এখানে 'M', 'a', 'r', 'k' s2-তে নেই -> ফালস।