ধরুন আমাদের কাছে শব্দ নামক স্ট্রিং এবং অক্ষর নামক আরেকটি স্ট্রিংয়ের একটি তালিকা আছে, আমাদেরকে শব্দের দীর্ঘতম স্ট্রিংয়ের দৈর্ঘ্য খুঁজে বের করতে হবে যা অক্ষরগুলির অক্ষর থেকে গঠিত হতে পারে। যদি কোন শব্দ তৈরি না হয়, তাহলে 0 দিন। এখানে আমরা অক্ষর পুনরায় ব্যবহার করতে পারি না।
সুতরাং, যদি ইনপুট শব্দের মত হয় =["কুকুর", "বিড়াল", "ইঁদুর", "খরগোশ", "সিংহ", "বাদুড়"], অক্ষর ="গাবক্টনিউ", তাহলে আউটপুট হবে 3, যেমন আমরা "বিড়াল", বা "ব্যাট" শব্দগুলি তৈরি করতে পারে, তাই সর্বোচ্চ দৈর্ঘ্য 3।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- রেফ :=অক্ষর সহ একটি মানচিত্র, এবং তাদের ফ্রিকোয়েন্সি
- সর্বোচ্চ :=0
- শব্দে প্রতিটি শব্দের জন্য, করুন
- w :=শব্দের অক্ষর এবং তাদের ফ্রিকোয়েন্সি সহ একটি মানচিত্র
- l :=শব্দের আকার
- কাউন্টার :=0
- w এর প্রতিটি k-এর জন্য, করুন
- যদি w[k] <=ref[k], তারপর
- কাউন্টার :=কাউন্টার + 1
- অন্যথায়,
- লুপ থেকে বেরিয়ে আসুন
- যদি w[k] <=ref[k], তারপর
- যদি l> সর্বোচ্চ এবং w এর আকার কাউন্টারের সমান হয়, তাহলে
- সর্বোচ্চ :=l
- সর্বোচ্চ রিটার্ন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
from collections import Counter class Solution: def solve(self, words, letters): ref = Counter(letters) max = 0 for word in words : w = Counter(word) l = len(word) counter = 0 for k in w : if w[k] <= ref[k]: counter+=1 pass else : break if l > max and len(w) == counter: max = l return max ob = Solution() words = ["dog", "cat", "rat", "bunny", "lion", "bat"] letters = "gabctnyu" print(ob.solve(words, letters))
ইনপুট
["dog", "cat", "rat", "bunny", "lion", "bat"], "gabctnyu"
আউটপুট
3