একটি শব্দের তালিকা এবং অক্ষরের স্ট্রিং letters দেওয়া আছে (তবে '*' যেকোনো অক্ষর মэтচ করতে পারে)। দেয়া অক্ষরগুলো ব্যবহার করে বানানো যাবে এমন সবচেয়ে বড় শব্দের দৈর্ঘ্য বের করুন।
উদাহরণ: words = ["prince","rice","price","limit","hello"], letters="*r**ce*" → আউটপুট ৬ ("prince")।
সমাধানের ধাপগুলো:
Counterদিয়েlettersএর ফ্রিকোয়েন্সি নিন।- প্রতিটি শব্দের জন্য
valid()চেক করুন: প্রয়োজনীয় অতিরিক্ত অক্ষর <=letters-এ '*' এর সংখ্যা। - বৈধ শব্দগুলোর মধ্যে সর্বোচ্চ দৈর্ঘ্য রিটার্ন করুন।
উদাহরণ
from collections import Counter
class Solution:
def solve(self, words, letters):
has = Counter(letters)
def valid(s):
need = Counter(s)
extra = sum(max(0, need[char] - has[char]) for char in need)
return extra <= has["*"]
return max(len(word) for word in words if valid(word))
ob = Solution()
words = ["prince", "rice", "price", "limit", "hello"]
letters = "*r**ce*"
print(ob.solve(words, letters))
ইনপুট
["prince", "rice", "price", "limit", "hello"], "*r**ce*"
আউটপুট
6