ধরুন আমাদের দুটি স্ট্রিং s এবং t আছে, আমাদের পরীক্ষা করতে হবে s-এ একটি অক্ষরের উপস্থিতি একাধিক নাকি t-এ একটি ফ্যাক্টর৷
সুতরাং, যদি ইনপুটটি s ="xxyzzw" t ="yyyxxxxzz" এর মত হয়, তাহলে আউটপুটটি True হবে কারণ s-এ x-এর ফ্রিকোয়েন্সি 2, এবং t-এ 4, s y-এ শুধুমাত্র একবার উপস্থিত, কিন্তু t-এ তিনটি y, s এবং t-এ একই সংখ্যক z আছে এবং s-এ এক w আছে কিন্তু t-এ নয়।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- s_freq :=s এবং তাদের ফ্রিকোয়েন্সিগুলির সমস্ত অক্ষর সহ একটি মানচিত্র
- t_freq :=t-এ সমস্ত অক্ষর এবং তাদের ফ্রিকোয়েন্সি সহ একটি মানচিত্র
- s_freq-এ প্রতিটি ch-এর জন্য, করুন
- যদি ch t_freq-এ না হয়, তাহলে
- পরবর্তী পুনরাবৃত্তির জন্য যান
- যদি t_freq[ch] s_freq[ch] দ্বারা বিভাজ্য হয় অথবা s_freq[ch] t_freq[ch] দ্বারা বিভাজ্য হয়, তাহলে
- পরবর্তী পুনরাবৃত্তির জন্য যান
- অন্যথায়,
- মিথ্যে ফেরত দিন
- যদি ch t_freq-এ না হয়, তাহলে
- সত্য ফেরান
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
from collections import defaultdict def solve(s, t): s_freq = defaultdict(int) t_freq = defaultdict(int) for i in range(0, len(s)): s_freq[s[i]] += 1 for i in range(0, len(t)): t_freq[t[i]] += 1 for ch in s_freq: if ch not in t_freq: continue if t_freq[ch] % s_freq[ch] == 0 or s_freq[ch] % t_freq[ch] == 0: continue else: return False return True s = "xxyzzw" t = "yyyxxxxzz" print(solve(s, t))
ইনপুট
"xxyzzw", "yyyxxxxzz"
আউটপুট
True