ধরি আমাদের দুটি স্ট্রিং s এবং t আছে। আমাদের যাচাই করতে হবে s-এ যেকোনো ক্যারেক্টারের ফ্রিকোয়েন্সি t-এ সেই ক্যারেক্টারের ফ্রিকোয়েন্সির ফ্যাক্টর বা মাল্টিপল কিনা।
উদাহরণস্বরূপ, s = "xxyzzw" এবং t = "yyyxxxxzz" হলে আউটপুট হবে True, কারণ: s-এ x-এর ফ্রিকোয়েন্সি ২, t-এ ৪ (২-এর মাল্টিপল); s-এ y-এর ফ্রিকোয়েন্সি ১, t-এ ৩ (১-এর মাল্টিপল); z উভয় জায়গায় একই; w শুধু s-এ আছে।
সমাধানের ধাপসমূহ
- s_freq := s-এ থাকা সব ক্যারেক্টার ও ফ্রিকোয়েন্সির ম্যাপ
- t_freq := t-এ থাকা সব ক্যারেক্টার ও ফ্রিকোয়েন্সির ম্যাপ
- s_freq-এ থাকা প্রতিটি ক্যারেক্টার ch-এর জন্য:
- যদি ch t_freq-এ না থাকে, তবে চালিয়ে যান
- যদি t_freq[ch] % s_freq[ch] == 0 বা s_freq[ch] % t_freq[ch] == 0, তবে চালিয়ে যান
- অন্যথায় false রিটার্ন করুন
- true রিটার্ন করুন
উদাহরণ
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