मान लीजिए कि हमारे पास एक शब्दकोश शब्द है, और हमें दिए गए शब्दकोष शब्दों से न्यूनतम लंबाई का शब्द खोजना है, इसमें स्ट्रिंग लाइसेंसप्लेट के सभी अक्षर हैं। अब ऐसा शब्द दिए गए स्ट्रिंग लाइसेंस प्लेट को पूरा करने के लिए कहा जाता है। यहां, हम अक्षरों के मामले को अनदेखा करेंगे। और यह गारंटी है कि एक उत्तर मौजूद है। यदि एक से अधिक उत्तर हैं, तो उस उत्तर को वापस करें जो सरणी में पहले होता है।
लाइसेंस प्लेट में एक ही पत्र कई बार हो सकता है। तो जब "पीपी" की लाइसेंस प्लेट, शब्द "पाइल" लाइसेंस प्लेट को पूरा नहीं करता है, लेकिन "टॉपर" शब्द करता है।
इसलिए, यदि इनपुट लाइसेंसप्लेट ="1s3 PSt", शब्द =["स्टेप", "स्टेप्स", "स्ट्राइप", "स्टेपल"] जैसा है, तो आउटपुट "स्टेप्स" होगा, जिसमें सबसे छोटा लंबाई वाला शब्द होगा जिसमें शामिल है अक्षर "S", "P", "S", "T" हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- वर्णमाला :="abcdefghijklmnopqrstuvwxyz"
- अक्षर :=सभी s को लाइसेंसप्लेट से लेकर जब s वर्णमाला में हो तब s की सूची लोअरकेस में
- valid_words :=एक नई सूची
- प्रत्येक i के लिए शब्दों में, करें
- जोड़ें :=सच
- अक्षरों में प्रत्येक j के लिए, करें
- संलग्न करें:=संलग्न करें और (अक्षरों में j की संख्या <=i में j की संख्या)
- यदि परिशिष्ट सत्य है, तो
- Valid_words के अंत में i डालें
- वैध_शब्दों में न्यूनतम लंबाई का शब्द लौटाएं
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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