ধরুন আমাদের একটি অভিধানের শব্দ আছে, এবং আমাদেরকে এজিভেন অভিধানের শব্দগুলি থেকে ন্যূনতম দৈর্ঘ্যের শব্দটি খুঁজে বের করতে হবে, এতে স্ট্রিং লাইসেন্সপ্লেটের সমস্ত অক্ষর রয়েছে। এখন এই ধরনের একটি শব্দ প্রদত্ত স্ট্রিং লাইসেন্সপ্লেট সম্পূর্ণ করার জন্য বলা হয়। এখানে, আমরা অক্ষরের ক্ষেত্রে কেস উপেক্ষা করব। এবং এটি একটি উত্তর বিদ্যমান নিশ্চিত করা হয়. যদি একাধিক উত্তর থাকে, তাহলে উত্তর দিন যা প্রথমে অ্যারেতে ঘটে।
লাইসেন্স প্লেটে একই অক্ষর একাধিকবার হতে পারে। তাই যখন "PP" এর লাইসেন্সপ্লেট হয়, তখন "পাইল" শব্দটি লাইসেন্সপ্লেট সম্পূর্ণ করে না, কিন্তু "টপার" শব্দটি করে।
সুতরাং, যদি ইনপুটটি লাইসেন্সপ্লেট ="1s3 PST", শব্দ =["পদক্ষেপ", "পদক্ষেপ", "স্ট্রাইপ", "স্টেপল"] এর মত হয়, তাহলে আউটপুটটি হবে "পদক্ষেপ", হিসাবে সবচেয়ে ছোট দৈর্ঘ্যের শব্দ যাতে রয়েছে অক্ষরগুলি হল "S", "P", "S", "T।"
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- বর্ণমালা :="abcdefghijklmnopqrstuvwxyz"
- অক্ষর :=যখন s বর্ণমালায় থাকে তখন লাইসেন্সপ্লেট থেকে সবগুলি নিয়ে ছোট হাতের s-এর একটি তালিকা
- valid_words :=একটি নতুন তালিকা
- শব্দে প্রতিটি i এর জন্য, করুন
- সংযোজন :=সত্য
- অক্ষরে প্রতিটি j-এর জন্য, করুন
- সংযোজন :=সংযোজন এবং (অক্ষরে j সংখ্যা <=i তে j সংখ্যা)
- যদি যোগ সত্য হয়, তাহলে
- valid_words এর শেষে i ঢোকান
- valid_words-এ সর্বনিম্ন দৈর্ঘ্যের শব্দ ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def shortestCompletingWord(self, licensePlate, words): alphabet = "abcdefghijklmnopqrstuvwxyz" letters = [s.lower() for s in licensePlate if s.lower() in alphabet] valid_words = [] for i in words: append = True for j in letters: append = append and (letters.count(j) <= i.count(j)) if append: valid_words.append(i) return min(valid_words, key=len) ob = Solution() print(ob.shortestCompletingWord("1s3 PSt", ["step", "steps", "stripe", "stepple"]))
ইনপুট
"1s3 PSt", ["step", "steps", "stripe", "stepple"]
আউটপুট
steps