ধরা যাক দুটি ছোট হাতের স্ট্রিং S এবং T আছে, আমাদের সর্বোচ্চ অ্যানাগ্রাম সাবসিকোয়েন্সের দৈর্ঘ্য খুঁজে বের করতে হবে।
উদাহরণ: S = "helloworld", T = "hellorld" হলে আউটপুট 8।
সমাধানের ধাপসমূহ
- c := নতুন ম্যাপ, d := নতুন ম্যাপ
- S-এর প্রতিটি ক্যারেক্টারের ফ্রিকোয়েন্সি c-এ সংরক্ষণ করুন।
- T-এর প্রতিটি ক্যারেক্টারের ফ্রিকোয়েন্সি d-এ সংরক্ষণ করুন।
- res := 0
- c-এর প্রতিটি ক্যারেক্টার ch-এর জন্য:
- যদি d[ch] > 0 হয়, তবে res := res + min(c[ch], d[ch])
- res ফেরত দিন।
উদাহরণ কোড
class Solution:
def solve(self, a, b):
c, d = {}, {}
for i in range(len(a)):
if a[i] in c:
c[a[i]] += 1
else:
c[a[i]] = 1
for i in range(len(b)):
if b[i] in d:
d[b[i]] += 1
else:
d[b[i]] = 1
res = 0
for ch in c:
if d.get(ch, 0) > 0:
res += min(c[ch], d[ch])
return res
ob = Solution()
S = "helloworld"
T = "hellorld"
print(ob.solve(S, T))
ইনপুট
S = "helloworld", T = "hellorld"
আউটপুট
8