মনে করুন s নামক একটি স্ট্রিং আছে। আমাদের এর সব সাবস্ট্রিংয়ের বিউটির যোগফল বের করতে হবে। একটি স্ট্রিংয়ের বিউটি হলো সবচেয়ে বেশি ফ্রিকোয়েন্সি वाले ক্যারেক্টার এবং সবচেয়ে কম ফ্রিকোয়েন্সি वाले ক্যারেক্টারের ফ্রিকোয়েন্সি পার্থক্য। তাই যদি স্ট্রিং "abaacc" হয়, তবে এর ফ্রিকোয়েন্সি পার্থক্য 3 - 1 = 2।
যেমন, ইনপুট s = "xxyzy" হলে, আউটপুট হবে ৫ কারণ নন-জিরো বিউটি वाले সাবস্ট্রিংগুলো হলো ["xxy","xxyz","xxyzy","xyzy","yzy"], প্রতিটির বিউটি ভ্যালু ১।
সমাধান পদ্ধতি
এই সমস্যাটি সমাধান করতে নিচের ধাপগুলো অনুসরণ করুন:
res := 0
i = 0 থেকে s-এর সাইজ - ১ পর্যন্ত
j = i+2 থেকে s-এর সাইজ - ১ পর্যন্ত
c := s[i:j+1] সাবস্ট্রিংয়ের ক্যারেক্টার ফ্রিকোয়েন্সি ম্যাপ
v := c-এর সব ফ্রিকোয়েন্সি ভ্যালুর লিস্ট
res := res + (max(v) - min(v))
res রিটার্ন করুন
উদাহরণ
নিচের ইমপ্লিমেন্টেশনটি দেখুন আরও ভালো বোঝার জন্য:
from collections import Counter def solve(s): res=0 for i in range(len(s)): for j in range(i+2,len(s)): c=Counter(s[i:j+1]) v=c.values() res+=(max(v)-min(v)) return res s = "xxyzy" print(solve(s))
ইনপুট
"xxyzy"
আউটপুট
5